私はSOLRとMySQLを扱っています。
これは私のdata-config.xmlです
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/meishidb"
user="root"
password="root"/>
<document>
<entity name="id"
query="SELECT
p.id,
p.occ_name
FROM
BCARDS_OCCUPATION AS p">
<field column="id" name='id'/>
<field column="occ_name" name='occ_name'/>
</entity>
</document>
</dataConfig>
これらは schema.xml に追加された行です
<field name="id" type="int" indexed="true" stored="true" required="true"/>
<field name="occ_name" type="text" indexed="true" stored="true" required="true"/>
クエリはうまく機能し、SOLR は「n」個のドキュメントをインデックスに追加します。問題はインデックスのクエリにあります。SOLR は、入力した場合に'*:*'
のみ、ドキュメント ID についてのみ結果を返します (および ではありませんocc_name
)。
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">1</int>
<lst name="params">
<str name="indent">on</str>
<str name="start">0</str>
<str name="q">*:*</str>
<str name="version">2.2</str>
<str name="rows">10</str>
</lst>
</lst>
<result name="response" numFound="5" start="0">
<doc>
<str name="id">1</str>
</doc>
<doc>
<str name="id">2</str>
</doc>
<doc>
<str name="id">3</str>
</doc>
<doc>
<str name="id">4</str>
</doc>
<doc>
<str name="id">5</str>
</doc>
</result>
</response>
私が検索した場合:
id:1
id=1 のドキュメントを教えてくれます
occ_name:1
「未定義フィールドocc_name」が表示されます
なぜ?