2012-02-14 11 views
7

SOLRインストールでは、複数単語の検索語句を使用してフィールドを検索すると、SOLRは検索のすべての用語を含むドキュメントを返すようにしますが、正確な順序である必要はありません。Solr - すべての用語を任意の順序で含む結果

たとえば、Brown Chicken Brown Cowのタイトルを検索すると、タイトルフィールドの順序に関係なく、Brown、Chicken、Cowのすべての語句を含むすべてのドキュメントを検索したいと思います。たとえば、「チキンと牛には茶色の糞があります」というタイトルはクエリと一致する必要があります。 AFAIK、これはGoogleが検索を実行する方法です。

私は、次のクエリ形式で実験しています

1. Title:Brown AND Title:Chicken 
2. Title:Brown AND Chicken 
3. Title:Brown+Chicken 

は、私は結果によって非常に混乱しています。場合によっては、最初の2つのクエリは同じ正確な結果セットを返します。他の例では、最初のバージョンは多くの結果を返し、2番目のバージョンはnoneを返します。 3番目のバージョンは私のニーズを満たすと思われますが、私はクエリの異なる意味で混乱しています。

すべてのテストは、text_en型のフィールドに対して実行されています。

<field name="Title" multiValued="false" type="text_en" indexed="true" stored="true"/> 

したがって、このタイプの検索にはどのようなSOLRクエリが最適ですか?また、Solr.NETにユーザーが入力した検索語をこの形式の形式に変換する簡単な方法はありますか?

また、デフォルトでSOLRは検索フレーズの順番と一致するドキュメントの関連性スコアを高くしますか?そうでない場合は、それを実現するために引き出すべき正しいレバーは何ですか?

編集: 私の混乱の一部は、デフォルトフィールド対ではないデフォルトのフィールドに対して検索することで引き起こされました。これを知って、一貫して動作する唯一のフォーマットは、最初のフォーマットです。

+0

あなたの投稿に署名やタグラインを追加しないでください(http://stackoverflow.com/faq#signatures)。 – meagar

答えて

6

私が使用しようとするだろう:

Title:(Brown Chicken) 

ブラケットがにそれが同等になりますあなたの質問はNoです。1.見積もりは、Solrにスペースと注文を含む正確な一致を検索させます。

+0

パーフェクト。ありがとう! – jmacinnes

+0

すべての語句が含まれている結果のみが返されますか? – vefthym

+0

デフォルトのbool演算子が "OR"であるか、 'mm 'で' edimax'を使用していない限り、普通です。 – Fuxi

2

Title:"Brown Chicken"を試してください。または、Dismaxクエリパーサーを使用してクエリを処理してください。


wiki for lucene query parserは(強調鉱山)を話す:

.... テキストは、デフォルトのフィールドあるので、フィールドインジケータが必要とされません。

注:フィールドは、それが直接の前用語、 ので、クエリ

タイトルでのみ有効です。右

のみを見つけるだろう、それを実行し、タイトル欄に「を行います」 。デフォルトフィールド(この場合はテキストフィールド)に "it"と "right"が表示されます。

データモデルにタイトルフィールドのみがありますか?

、彼らが獲得しているかを確認するためにクエリを説明するためにdebugQuery=onを実行してください:私があなただったら、アクションでそれを見るhttps://stackoverflow.com/a/9262300/604511

+0

いいえ、私の文書には複数のフィールドがあります。タイトルはデフォルトのフィールドなので、私が見ている奇妙なことのいくつかを説明しています。引用符の使用は機能しません。それは用語の順序を強制する。この情報を使って、私が望むものを達成する唯一の方法は、この形式です:タイトル:Brown AND Title:Chicken。残念ながら、そのフォームにキーワードを解析するのは少し面倒です。私はDismaxを調べます。 – jmacinnes

+0

"それは用語の順序を強制する"は知っていたはずです: -/ – aitchnyu

関連する問題