2013-01-11 31 views
0

我剛剛在Solr中遇到了LocalParams,我想知道是否在使用LocalParams時使用LocalParams而不是指定參數的默認方式。Apache Solr LocalParams性能

爲了給你什麼,我的意思是,考慮下面的網址

默認的例子

/select?q=dog&defType=dismax&qf=q_title_exact^20.0+q_title+q_suggest^0.5 

LocalParams

/select?q={!type=dismax qf='q_title q_title_exact^20 q_suggest^0.5'}dog 

雖然在規模上的差異是微不足道的,但事實上,我可以將我的參數類型限制爲一個,對我來說非常有利。

但是,由於它們被稱爲本地 Params,我擔心使用它們可能會影響性能,如未正確緩存。

回答

2

如果您使用localparams與默認方式相比,我認爲您的緩存功能不重要。您給出的示例將具有相同的功能。但是,LocalParams在以下情況下具有優勢(並且可能會影響存儲在緩存中的記錄,具體取決於您是在執行標準搜索還是使用某些dismax/edismax搜索): -

假設您要搜索對於其字段'A'匹配值'A1'和字段'B'匹配值'B1'的記錄。此外,您希望基於dismax解析器匹配字段'A',而匹配字段'B'應該基於solr的標準解析器完成。

據我瞭解LocalParams,下面的代碼(未經測試): -

/select?q=A:A1&fq=B:B1&defType=dismax&qf=A^20.0+B^0.5 

不會達到目的,因爲它會執行dismax尋找既場A和B.實地但是,下面的代碼(未經測試): -

/select?q={!type=dismax qf='A^20.0 B^0.5}A:A1&fq=B:B1 

將執行dismax跨越領域的搜索,而搜索標準將現場B.做

所以,你可以說日在LocalParams可以幫助您執行「不同類型的搜索」。根據使用的參數,它們還有許多其他優點。

+0

感謝您的回覆。爲了回報這個好處,如果你檢查 http://wiki.apache.org/solr/SolrQuerySyntax,它表明defType隻影響主查詢(q)。任何其他過濾器查詢(fq)都將使用默認解析器。 – Dogoku

+0

我的不好。 defType隻影響主查詢是正確的。不過,我只是舉了一個例子(雖然不正確)。還有其他的localParams可以用來指定操作應該是「與」還是「或」。上面的推理適用於所有地方的參數。 LocalParams提供了將元數據添加到某些參數類型(如查詢字符串)的方法(根據wiki)。 – Max