0

Apache Solr を使用して強調表示を正しくしようとしています。部分一致の場合、単語の一致部分を強調表示したい。ただし、代わりに単語全体 (検索語に部分的に一致したもの) が強調表示されます。

例:

「adida shi」を検索すると、「adidas shirts」という名前のアイテムと「adidas red shirts」という名前のアイテムの 2 つが表示されます。

/select?q=name:adida+shi&hl=true&hl.fl=name&qt=standardwt=json

予想される強調表示:

<em>adida</em>s <em>shi</em>rts
<em>adida</em>s red <em>shi</em>rts

実際の強調表示:

<em>adidas</em> <em>shirts</em>
<em>adidas</em> red <em>shirts</em>

強調表示に使用されるフィールドは、schema.xml で次のように定義されます。

<field name="name" type="autocomplete_text" indexed="true" stored="true"/>    

フィールドのフィールド タイプは次のようになります。

<fieldType name="autocomplete_text" class="solr.TextField" positionIncrementGap="100">
     <analyzer type="index">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory" />
       <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
    </analyzer>
    <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory" />
    </analyzer>
</fieldType>  

コア構成ファイルで強調表示するための特定の構成がありません。

Solr v6.0.1 を使用しています。強調表示は、同じ構成の solr v4.10.4 で期待どおりに機能していました。Solr wiki の次のセクションを調べて、さまざまな強調表示パラメーターを試しましたが、うまくいきませんでした。

https://cwiki.apache.org/confluence/display/solr/Highlighting https://cwiki.apache.org/confluence/display/solr/Standard+Highlighter

それを機能させる方法はありますか?

4

1 に答える 1

0

前のコメントのフォローアップとして回答を追加します。

この問題は、EdgeNGramFilterFactory が期待どおりに機能せず、代わりにトークンの生成時に誤ったオフセットを報告することが原因である可能性が最も高いです。このような問題は、Solr の過去のいくつかのバージョンで、Jira で数回再オープンされました。

プロダクション設定 luceneMatchVersion="4.5" (または、NGramFilterFactory.

Jira コメント内にこの解決策がありますが、見つからないため、申し訳ありませんが、参照として追加することはできません。

于 2016-07-26T10:12:04.960 に答える