2011-12-28 127 views
2

在solr中建立查詢是否存在正確/錯誤的方法?假設我有兩個索引字段,x和y。和一個像+x:123 +y:abc這樣的查詢。表達的順序是否重要(就表現而言)?例如,如果其中一個表達式產生的文檔集小於另一個,這是否會影響查詢性能?building solr查詢

+0

您是否從RDBMS連接優化問題中獲得靈感?例如:可以連接**(1)**將一個表中的10000行連接到另一個表中的5行或**(2)**將一個表中的5行連接到另一個表中的10000行。 您可能需要仔細查看[索引數據結構](http://en.wikipedia.org/wiki/Inverted_index)和[評分算法](http://en.wikipedia.org/wiki/Vector_space_model)上的查詢)lucene實現它的方式。 – aitchnyu 2011-12-28 07:58:58

+0

我其實並沒有意識到存在RDBMS連接優化問題。我只是想知道構建查詢的方式是否會影響性能。 – Kevin 2011-12-30 19:08:22

回答

0

我想如果在文本搜索參數中使用「+ x:123 + y:abc」,那麼順序沒有區別。當你知道何時使用fq(過濾器查詢)與q並調整緩存/提交時,性能上的巨大好處是。

FQ是最適合與價值有限列表非「文本搜索」領域(如製造商,型號,類型,類別,顏色)

q將是「文本搜索」,所以尋找「網絡開發者rockstar「vs」rockstar developer web「將會返回相同的結果。

+0

我用fq得到了很好的加速,謝謝。 – Kevin 2012-01-03 21:43:01

+0

將fq用於經常請求的查詢子集,q用於相當「自定義」且經常更改的查詢子集。兩者都使用可以調整的不同緩存配置。當緩存的fq被一遍又一遍地重複請求時,fq緩存顯然是最支持的,而不是隻緩存一次,並且再也不要求。增加q緩存可能會產生反作用,因爲太多的永遠不會再請求q組保持並減慢solr。 http://lucidworks.com/blog/advanced-filter-caching-in-solr/ – Risadinha 2015-05-12 09:04:21