簡體   English   中英

SOLR 6.6 eDisMax查詢不符合mm參數

[英]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和三星產品。 然而這樣做同樣事情時,只需更換defTypedefType=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=2defType=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個術語中的任何一個的任何文檔。

無論哪種方式,都沒有關系,可以實現相同的行為,只是使disMaxeDisMax之間的行為有些矛盾而感到困惑。

希望這對其他人有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM