[英]SOLR 6.6 eDisMax query not respecting mm parameter
我使用的是Solr 6.6.2及更高版本,直到現在我們都在使用DisMax查詢和mm
參數,並且它按預期運行。 一個小例子
defType=dismax&q=samsung+iphone&qf=name+brand&mm=1
將返回預期的結果集,其中包含iPhone和三星產品。 然而這樣做同樣的事情時,只需更換defType
到defType=edismax
(保持mm=1
)沒有返回結果。 我已經閱讀了Apache SOLR參考上的eDisMax查詢解析器的文檔,它清楚地表明eDisMax是擴展,因此我希望mm
在DisMax和eDisMax中的行為相同,如果在同一頁面上向下滾動,文檔還給出了應該可以正常使用的mm
參數的示例。 這是一個錯誤,還是我遺漏了一些明顯的東西? 喜歡這里的幫助
編輯添加與請求一起發送的Solr參數
eDisMax
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":0,
"params":{
"mm":"1",
"q":"samsung iphone",
"defType":"edismax",
"indent":"on",
"fl":"name, category_names, score",
"fq":"channel:outbound",
"wt":"json",
"_":"1515855895772"}},
"response":{"numFound":0,"start":0,"maxScore":0,"docs":[]
}}
DisMax
{
"responseHeader":{
"zkConnected":true,
"status":0,
"QTime":22,
"params":{
"mm":"1",
"q":"samsung iphone",
"defType":"dismax",
"indent":"on",
"fl":"name, category_names, score",
"fq":"channel:outbound",
"wt":"json",
"_":"1515855895772"}},
"response":{"numFound":2147,"start":0,"maxScore":12.172616,"docs":[
{
"name":"Apple iPhone 5s",
"score":12.172616},...]
}}
不知道是否有人遇到過這個問題,但是我覺得它沒有很好的記錄。 我們的Solr q.op
默認為AND
,因此搜索詞"foo bar car"
被搜索為foo AND bar AND cat
。 現在,使用mm=2
和defType=dismax
,查詢被錯誤地解析為(foo AND bar AND cat)~2
〜2。
當我改變defType=edismax
相同的查詢"foo bar cat"
和mm=2
被解析為(foo AND bar AND cat)
注:缺少~2
。
現在,如果我繼續添加q.op=OR
有趣的事情就會開始發生。 現在,已解析的查詢看起來像(foo bar cat)~2
dismax
,這正是dismax
所做的。 因此,您可以理解(foo bar cat)~2
至少找到了我其中兩個詞。 如果刪除mm
參數,則解析的查詢看起來像(foo bar cat)
並且由於q.op=OR
它返回包含3個術語中的任何一個的任何文檔。
無論哪種方式,都沒有關系,可以實現相同的行為,只是使disMax
和eDisMax
之間的行為有些矛盾而感到困惑。
希望這對其他人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.