Javaオブジェクトの形式で検索リクエストを受け取り、そこからSOLRクエリオブジェクトを作成してインデックスをクエリします。
たとえば、ユーザーがtitleというフィールドで正確な検索を実行したいとします。彼はフォームのクエリを送信します
Field = "title", value = "Algebra", Operator = "EQUALS"
演算子が「EQUALS」と表示されたら、次のようなSolrクエリを作成します
title:Algebra
ワイルドカードまたはステム検索の場合、リクエストは次のようになります。
Field = "title", value = "Algebra", Operator = "LIKE"
演算子は「LIKE」であるため、私が作成しているsolrクエリは次のようになります。
title:*Algebra*
ここでの問題は、ワイルドカードおよびその他のステム化されたオプションが機能することです。タイトルフィールドは、schema.xmlでtext_generalおよびtext(コピーフィールドオプションを介して)として定義されているため、演算子「:」を使用すると、ステム化された検索が実行され、次のような結果が取得されます。タイトルフィールドに代数の単語があります。出力として期待しているのは、タイトルが代数のレコードだけです。
構成ファイルのタイトルフィールドを「文字列」として変更する必要がある1つの解決策を知っています。しかし、これは私のステム検索とワイルドカード検索オプションに影響します。
したがって、基本的には、ステム検索(および他のすべてのtext_generalフィールドオプション)と、渡した演算子に基づく完全一致の両方をサポートするフィールドが必要です。それも可能ですか。もしそうなら、plは私に同じことを達成する方法を教えてくれます。