1

姓名など、ユーザーに関する情報を格納するテキスト フィールドがあります。例: ジョン・ベル。「John」または「Bell」または「John Bell」を検索すると、問題なく動作します。
しかし、「Bell John」で検索すると、検索結果が 0 件です。この問題を解決することはできますか? スキーマ構成:

<field name="content" type="content_ws" indexed="true" stored="true" />

<fieldType name="content_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="query">
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
      </analyzer>
      <analyzer type="index">
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
      </analyzer>
    </fieldType>
4

2 に答える 2

0

標準のクエリハンドラを使用すると、近接パラメータを使用してクエリを作成できます。

たとえばq=content:"Bell John"~2、2はスロップまたは離れたトークンの数です。

ジョンベルを検索すると、単語が所定の位置にあるため、ゼロの近接スロップが機能します。検索されたのと同じ単語を作成するための位置の変更はありません。

ただし、クエリがBell John単語を作成するためのホップ数である場合は2です。

例えば

Bell John - Query data  
Bell - One hop would bring Bell and John at the same position  
John  
John Bell - Second hop would recreate the indexed term. 

したがって、尊敬されるクエリの場合、この場合のスロップは最小2である必要があります。

于 2012-12-04T18:19:43.357 に答える
0

DisMaxクエリ パーサーを使用し、 qsパラメータを 2 より大きい値に設定すると、逆順でクエリを見つけるのに役立ちます。

クエリは次のようになります。

http://localhost:8993/solr/select?defType=dismax&q="Bell John"&qs=2
于 2012-12-04T13:19:33.947 に答える