2011-12-10 96 views
0

我在兩個方面Solr的查詢優先

方式1取得了Solr的查詢:

狀態= 「已發送」 和主機名: 「host.com」 和LOG_DATE:2011-12-08T00:00: 00Z TO 2011-12-08T23:59:59Z] 結果:328232

方式2:

主機名: 「host.com」 AND LOG_DATE:2011-12-08T00:00:00Z TO 2011- 12-08T23:59:59Z] AND status =「發送」 結果:62359

我通過原始數據集中的grep等進行驗證,發現第二種查詢方式2:給出了正確的計數。這是查詢應該如何或者我有一個格式不正確的查詢?

我的另一個問題是我只用索引進行索引和搜索,因此我有可能告訴solr不知何故不計算分數,並且在返回結果時不要擔心分數?它會讓事情變得更快嗎?

+0

'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" 

您可能需要按照上面的鏈接維基的指導,並結合部分或全部過濾查詢值。

就得分問題而言,AKAIK總是通過Solr計算得分,因爲它使用這個來返回並排列索引中的相關項目。所以我不認爲有可能關掉它或者不計算分數來獲得任何表現。如果您不需要更改fl參數,則不能指定分數作爲字段返回。

+0

謝謝你的答覆paige和mauricio,查詢語法不正確,因爲paige指示。 – user1082214