Solrを使用していますが、クエリにLIKE句を含めることができるかどうかを知りたいです。たとえば、タイトルに「ニューヨーク」が含まれているすべての組織を知りたいです。SQLでは、これはName LIKE'New York%'のように記述されます。
私の質問-SolrでLIKEクエリをどのように記述しますか?
違いがあれば、私はSolrNetライブラリを使用しています。
「ニューヨーク」を検索するだけですが、最初にフィールドのアナライザーを適切に構成する必要があります。たとえば、デフォルトのSolrスキーマtext_general
で定義されているようなフィールドタイプから始めたい場合があります。このフィールドタイプは、空白やその他の一般的な単語の区切り文字をトークン化し、ストップワードのフィルターを適用してから、大文字と小文字を区別しないように用語を小文字にします。
Solrwikiのアナライザーに関する詳細情報。
solr 3.1以降を使用している場合は、Extended DisMax Query Parser
ワイルドカードクエリをサポートするをご覧ください。<str name="defType">edismax</str>
リクエストハンドラの設定で使用して有効にできます。
次にtitle:New York*
、like句を使用したクエリと同じ動作でlikeクエリを使用できます。私の答えと受け入れられた答えの主な違いは、ワイルドカードを使用して単語の断片を検索することさえできるということです。たとえばNew Yorkers
、この場合は一致します。残念ながら、を使用している場合でも、大文字と小文字を区別するクエリで問題が発生する可能性がありますLowerCaseFilterFactory
。詳細については、こちらをご覧ください。これらの問題のほとんどは、SOLR-2438の問題が解決されたため、solr3.6リリースで修正されます。