出现在Elasticsearch中的错误结果必须与查询匹配

时间:2019-02-06 10:58:37

标签: elasticsearch elasticsearch-php

我在搜索字段上有以下分析器:

GET _analyze
{
  "tokenizer": "standard",
  "filter":  [ "word_delimiter","lowercase", {"type" : "shingle",
                            "min_shingle_size" : 2,
                            "max_shingle_size" : 4,
                            "output_unigrams" : true}, {"type" : "pattern_replace",
                            "pattern" : " ",
                            "replacement" : ""} ],
  "text":      "One marium malik 270"
}

弹性搜索查询:

{
  ["index"]=>
  string(19) "_dev"
  ["from"]=>
  int(0)
  ["size"]=>
  int(60)
  ["body"]=>
  array(3) {
    ["query"]=>
    array(1) {
      ["bool"]=>
      array(3) {
        ["should"]=>
        array(2) {
          [0]=>
          array(1) {
            ["bool"]=>
            array(1) {
              ["must"]=>
              array(3) {
                [0]=>
                array(1) {
                  ["match"]=>
                  array(1) {
                    ["searched_text"]=>
                    array(2) {
                      ["query"]=>
                      string(4) "marium"
                      ["fuzziness"]=>
                      string(4) "AUTO"
                    }
                  }
                }
                [1]=>
                array(1) {
                  ["match"]=>
                  array(1) {
                    ["searched_text"]=>
                    array(1) {
                      ["query"]=>
                      string(3) "malik270"
                    }
                  }
                }

              }
            }
          }
          [1]=>
          array(1) {
            ["bool"]=>
            array(1) {
              ["should"]=>
              array(1) {
                [0]=>
                array(1) {
                  ["match"]=>
                  array(1) {
                    ["manu_no"]=>
                    array(2) {
                      ["query"]=>
                      string(14) "marium malik270"
                      ["boost"]=>
                      int(10)
                    }
                  }
                }
              }
            }
          }
        }
        ["minimum_should_match"]=>
        int(1)
      }
    }    
    ["sort"]=>
    array(1) {
      ["sp"]=>
      array(2) {
        ["mode"]=>
        string(3) "min"
        ["order"]=>
        string(4) "desc"
      }
    }
  }
}

当我搜索以上关键字时,我得到了几个不相关的结果。

不育症的结果包括:

marium malik 97
marium malik Plus TN
marium malik PLUS OG

但是,如果我删除“ malik”,请将其分隔在另一个必须查询的地方:

must: match searched_keyword: 'malik'
must: match searched_keyword: '270'

,并在该查询中保留数字,然后就可以正常工作了。

可能是什么问题?

0 个答案:

没有答案