2011-12-10 32 views
0

私は2つの方法でSolrのクエリの優先順位

方法1 Solrのクエリを作っ:

= "送ら" の状態とホスト名: "host.com" AND log_date:[2011-12-08T00:00: 2011-12-08T23 TO 00Z:59:59Z] 結果:328232

方法2:

ホスト名: "host.com" AND log_date:[2011-12-08T00:00:00Zは2011- TO 12-08T23:59:59Z] ANDステータス= "送信済み" 結果:62359

元のデータセットでgrepなどを使って検証したところ、2番目のクエリ方法2:が正しい数を返すことがわかりました。これはクエリがどのようになっているのか、または不正なクエリがありますか?

私が持っている別の質問は、索引付けと検索のみでsolrを使用していることです。結果を返すときにscoreを計算せずスコアを心配しないようにsolrに伝えることは可能ですか?それは私のために物事を速くするだろうか?

+0

'status =" sent "は無効なクエリです。それは 'status:sent'でなければなりません –

答えて

0

結果を限定するのに役立つように、Solr Filter Queriesを使用してください。現在の検索フィールドのすべてが指定されたフィールド値のフィルタだけであるように見えるため、メインクエリがどのようなものか、フィルタクエリとして渡すことができるものが不明です。だから、おそらくあなたは、次のようにメインの検索語としてlog_dateを使用してクエリを実行します:

q=log_date:[2011-12-08T00:00:00Z TO 2011-12-08T23:59:59Z]&fq=status:"sent"&fq=hostname:"host.com" 

あなたは上記のWikiリンクでのガイダンスに従うと、フィルタクエリ値の一部または全部を組み合わせたいことがあります。

AKAIKスコアは、Solrによって常に計算されます。これは、これを使用してインデックス内の関連するアイテムを戻してランク付けするためです。だから私はそれをオフにしたり、スコアを計算しないことでパフォーマンスを得ることは可能ではないと思います。 flパラメータを変更してスコアを必要としない場合は返すフィールドとしてスコアを指定することはできません。

+0

返事にpaigeとmauricioありがとうございました。 – user1082214