フレーズ検索の場合、完全に一致する場合にのみ結果を表示したいと考えています (ストップワードを無視することはありません)。語句以外の検索であれば、単語の原形が一致していても結果を表示しても問題ありません。
現在、standardTokenizer、StopFilter、PorterStemFilter、および LowerCaseFilter を介してデータを渡しています。このため、ユーザーが「パスワード管理」を検索したい場合、検索は「パスワード マネージャー」を含む結果を表示します。
StemFilter を削除すると、語句以外のクエリの語根形を照合できなくなります。ドキュメントの 2 つのフィールドの一部として同じデータをインデックス化する必要があるかどうかを考えていました。
インデックス サイズを 2 倍にすることなく、同じフィールドで異なるインデックス作成と検索戦略で同じ質問をしましたか? . しかし、オフィスの人々は、2 つのフィールドの一部として同じデータをインデックス化することに満足していません。(現在、lucene ドキュメントには約 20 のテキスト フィールドがあります)。TokenFilters を使用して上記の両方のケースをサポートする方法はありますか?
たとえば、StopFilter の場合、入力トークンと ? の両方を発行するように変更します。(無視された単語の場合)同じ位置の増分で。同様に、StemFilter の場合、入力トークンと語幹化されたトークンの両方を同じ位置のインクリメントで発行します。基本的に、入力トークンと出力トークン (無視されたものも含む) は同じ位置にあります。
このアプローチを進めても安全ですか? ここに記載されている要件に直面した人は他にいますか? 私のアプローチで述べたことと同様のことを行うフィルターはすぐに利用できますか?
ありがとう