0

アプリケーションで Solr4.2 を使用しています。テキスト フィールドの定義を のSolr.PatternTokenizerFactory代わりにを使用するようにSolr.StandardTokenizerFactory変更し、スキーマの定義を次のように変更しました。

<fieldType name="text_token" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
       <tokenizer class="solr.PatternTokenizerFactory" pattern="[^a-zA-Z0-9&amp;\-']|\d{0,4}s:" />
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="false" />
       <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
       <tokenizer class="solr.PatternTokenizerFactory" pattern="[^a-zA-Z0-9&amp;\-']|\d{0,4}s:" />
       <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_extra_query.txt" enablePositionIncrements="false" />
       <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>

これを行うと、あいまい検索が以前のように正しく機能しないようです。

検索語で検索しています:worde~1

検索すると、以前は約 300 件のレコードが返されていましたが、現在は 5 件しか返されません。

WORDこれらの 5 つのレコードには、、、WORDSのような単語が含まれていますWORSE。しかし、そのような単語を含む他のドキュメントは返されません。

何が問題になるかわかりません。

誰かがそれを機能させるのを手伝ってくれますか?

編集 :

正規表現は、アルファベット、数字、「&」、「-」、および ns: を除く任意のものでトークンを分割します (n は 0 から 9999 までの数値、たとえば 4323s: )。

たとえば、私のテキストが以下のようなものだとしましょう。

this is nice* day & sun 53s: is risen.

次に、パターントークナイザーはトークンを次のように作成する必要があります

this is nice day & sun is risen(すべての単語は diff. token です)

パターンは異なるテキストでうまく機能しているように見えますが、

あいまい検索についてもworde~1、patterntokenizer factory の結果の戻り値を確認しました。「WORDS」、「WORDED....」などの句読点があります。

もう 1 つの奇妙な点は、すべての結果が大文字であり、小文字の結果を含む結果が表示されないことです。ただし、大文字のすべての結果も返すわけではありません。

4

1 に答える 1

1

「アナライザー」でできることはあまりないと思います。なぜなら、それはすでに期待どおりに機能しているからです。インデックス作成とクエリ中にトークナイザーとフィルターを適用する方法に害はないようです。

したがって、「アナライザー」部分が優れていると仮定すると、あいまい検索の実行方法には少し変更が必要だと思います。

検索クエリ (~ の後) で使用した数値によって、あいまい検索の精度が決まります。

「Lucene 1.9 以降では、追加の (オプションの) パラメーターで必要な類似度を指定できます。値は 0 から 1 の間で、 値が 1 に近いほど類似度の高い用語のみが一致します。」

私の提案は、この値を減らしてより多くの検索結果を取得することです。試行錯誤により、あいまい検索で期待されるレベルの類似性に到達することができました。

于 2013-04-24T04:48:12.340 に答える