1

私は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:1id=1 のドキュメントを教えてくれます

occ_name:1「未定義フィールドocc_name」が表示されます

なぜ?

4

1 に答える 1

0

スキーマで作成したかどうかはわかりませんがfieldType text、デフォルトのスキーマにはそのようなfieldTypeはありません。

フィールド定義で使用type="text_en"してみてください。occ_name

そしてところで(私はいつも同じことを提案します)、インデックスの中に実際に何が入っているかを調べるには、 Lukeと呼ばれる史上最高のLuceneツールを使用します。

于 2012-04-24T07:17:25.333 に答える