0

セットアップに次のインデックス付きドキュメントがありSolr 4.0、タイトルフィールドにドキュメントがあります-

  1. 働くために
  2. トポロジー
  3. ...<もっとたくさん>

タイトルフィールドはsolr.StrField(String)です。また、トークナイザー とフィルターを使用して、別のタイプcopyFieldtitleフィールドにフィールドのを持っています。title_tokensolr.TextFieldStandardTokenizerFactoryLowerCaseFilterFactory

ユーザーが。だけを検索すると、で始まるToドキュメントを取得するために、でクエリを実行します。正常に動作します。ドキュメント1と2を表示します。titleToSolrtitle:To*

ただし、ユーザーが(Toの後にスペースを入れて)検索すると、このクエリをlike (Toと*の間にスペースを入れてTo)に送信します。理想的には、最初のドキュメントのみを表示する必要があります。ただし、すべてのドキュメントが表示されます。Solrtitle:To *

クエリtitle:To *と一緒 にクエリを実行すると&debugQuery=true、として解析され"parsedquery_toString":"title:to title:*"ます。

すべてのドキュメントが表示されるためtitle:*、すべてのドキュメントが表示されます。

(Toの後にスペースを入れて)で始まるTo *すべてのドキュメントを取得するクエリを実行するにはどうすればよいですか?この場合、ドキュメント1は表示されませんか?titleTo

Embedded Solr serverで実行中のWeb App実行を使用していTomcatます。solrj結果のクエリとフェッチに使用します。

4

1 に答える 1

2

field:to\ *形成されるクエリがtitle:to * すべてのドキュメントと一致するように、空白をエスケープする必要があります。

また、ワイルドカードクエリ:-
引用句内ではワイルドカードはサポートされていないことに注意してください。それらは空白であるかのように扱われます。

プレフィックス、ワイルドカード、およびあいまい検索では、検索語に対してテキスト分析は実行されません。
したがってTo*、小文字のフィルターを使用すると、インデックスドキュメントと一致しなくなります。

于 2013-02-16T09:48:23.607 に答える