4

インデックス作成とクエリで別のアナライザーを使用したいという実質的な理由はありますか? たとえば、例の schema.xml ファイルの text_en_splitting では、インデックス アナライザーは同義語展開を行いませんが、クエリ アナライザーは行います。それはインデックスをできるだけ小さく保つためですか?同様に、WordDelimiterFilterFactory の場合、インデックス アナライザーには catenateWords="1" と catenateNumbers="1" があり、クエリ アナライザーには 0 が設定されています。これはクエリを小さく (高速に) 維持するためですか? これらの最適化は、「ほぼ同一」である 2 つのアナライザーのメンテナンスの悪夢に値するものでしょうか?

ありがとう!

4

1 に答える 1

8

インデックス時とクエリ時に同義語を拡張する必要はありません。これら 2 つのうちの 1 つだけです。考えてみてください。インデックス作成中にのみこれを行うと、リストされているすべての単語がすべての同義語によって補完されます。
次に、これらの単語のいずれかでインデックスをクエリすると、展開されたすべてのドキュメントが一致します。

両端を拡張する必要はありません。また、インデックス時に実行することをお勧めします。これにより、クエリ時間が短縮されます。

IMHO、一般的なルールは、ユーザーエクスペリエンスを大幅に向上させるために、可能な限り(クエリ時に同義語を展開することから数ミリ秒を含む)チップを使用することです。そして、これらのチップはかなり積み重なる可能性があります。

ドキュメントでデータの冗長性を推奨する理由について、同じ質問をすることができます。

于 2012-04-17T07:18:46.630 に答える