0

SOLR をセットアップし、サンプル「collection1」にドキュメントを追加しました。

<doc>
    <str name="id">3007WFP</str>
    <str name="name">Fishing</str>
    <str name="type">Ladies</str>
</doc>

を使用してインターフェイスで問題なくクエリを実行できます

name:*fishing*

しかし、ステミングを機能させたいので、たとえばfish、単語fishingがステミングされているため、このドキュメントを入力して取得できます。Ladiesが検索されたときに見つけられるようにしたいLadyです。

しかし、私はクエリを試しました

name:fish

結果が得られません。一致することがわかっているため、ワイルドカードを追加しませんでした。ステミング機能のみをテストしたいだけです。

ステミングが含まれていると思われる名前フィールドとタイプ フィールドの両方のスキーマ タイプを変更しましたtext_en- SOLR を再起動し、インデックスを再作成しました (最適化をクリックしました)。

ステミングを使用する場合、クエリ構文は異なりますか?

もう 1 つの奇妙な問題は、検索をからtext_generalに変更した後です。text_en

name:Fishing

完全に一致する必要がありますが、結果は得られません..

4

2 に答える 2

2

最適化をクリックしても、ドキュメントは再インデックスされません。既存のインデックスのさまざまなセグメントを単純にマージします。つまり、インデックスがまだ古いことを意味します。したがって、ドキュメントを再投稿する、つまりインデックスを再作成すると、name:fish一致するはずです。

ところで、アナライザーが で何をしているかを調べることができますhttp://localhost:8983/solr/#/collection1/analysis。fieldType を選択して、インデックス時に何が起こるかを確認できます。たとえば、このツールを使用すると、text_enタイプについて次のことがわかります。

fishing -> fish
ladies -> ladi

そのため、 を検索してtype:ladyもこのドキュメントには一致しません。「フィールド値 (クエリ)」でクエリも指定すると、一致するものがあれば強調表示されます。

于 2013-02-20T15:42:29.423 に答える