0

SOLR を使用した検索に問題があります。私のスキーマは次のように定義されています。

    <field name="_root_" type="string" indexed="true" stored="false"/>
    <field name="_text_" type="text_general" multiValued="true" indexed="true" stored="true"/>
    <field name="_version_" type="long" indexed="true" stored="true"/>
    <field name="deleted" type="booleans" indexed="true" stored="true"/>
    <field name="description" type="strings" indexed="true" stored="true"/>
    <field name="favorites_count" type="tlongs"/>
    <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
    <field name="image" type="strings"/>
    <field name="ingredients" type="strings" multiValued="true" indexed="true" stored="true"/>
    <field name="level" type="tlongs"/>
    <field name="portions" type="tlongs" indexed="true" required="true" stored="true"/>
    <field name="preparation" type="strings"/>
    <field name="rating" type="tdoubles"/>
    <field name="ratings_count" type="tlongs"/>
    <field name="subject" type="strings" indexed="true" required="true" stored="true"/>
    <field name="visible" type="booleans" indexed="true" stored="true"/>

問題は、「成分」フィールドで検索を実行しようとしたときです。

主なクエリ:

q=(件名:"フレーズ検索入力" OR 説明:"フレーズ検索入力") AND 成分:("いくつかの成分フレーズ")

または成分:searchWord

components パラメーターを指定しないクエリは問題なく動作し、正しい結果が出力されます。

ただし、成分のフィルタリングに関しては、fqを使用していても、クエリ文字列で直接使用していても、間違っているか、まったく結果が得られません。

成分フィールドには、次のようなデータがあります。

材料:[ 材料 1、材料 2、材料 3 フレーズ ]

もう 1 つの問題は、成分に「(」または「)」文字が含まれていて、そのようなフレーズを検索している場合です。一致しません。

SOLR バージョン: 5.3

誰でもこれについて私を助けることができますか?

ありがとうございました!

4

1 に答える 1

0

データを見て詳しい情報を入手しないと、正確な原因を特定することは困難です。ただし、次の手順に従って、問題をさらにトラブルシューティングすることができます。

  1. Solr Admin Analyzer を使用して、データが成分フィールドにどのように格納され、どのようにクエリが取得されるかを確認します。
  2. データが成分フィールドに正しくロードされていることを確認します。送信する各値が実際に個別のトークンとして保存されていることを確認してください。
  3. フィールドをトークン化していないことに注意してください。これは、検索に影響を与える可能性があります。
  4. クエリに「debug=true」パラメーターを追加します。Solrがクエリをどのように「見る」かを取得します
于 2015-12-11T18:47:48.580 に答える