ElasticSearch分析器,用于在搜索中优先考虑术语外观的顺序

时间:2015-11-26 15:38:00

标签: elasticsearch

我在Elastic中有一个对象,它代表一个具有两个属性的产品: title category 。在标题内我有一个关于 exact-word 的字段和另一个关于同义词的字段。在搜索时,我正在通过确切的单词提高文档的搜索量,但如果我有一个名为“Notebook dell”和“bag notebook”的产品,那么它首先会带来袋子笔记本。

我希望在传递自定义分析器后优先考虑搜索词的出现顺序,例如:

  • 三星笔记本
  • 笔记本电脑戴尔
  • 笔记本电脑Macbook Pro
  • bag notebook

应该是

  • 笔记本电脑戴尔
  • 笔记本电脑Macbook Pro
  • bag notebook

这可能吗?

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找Span First Query

您可以在you子句中添加此项以增加以搜索词开头的文档,如此

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "title": "notebook"
          }
        },
        {
          "span_first": {
            "match": {
              "span_term": {
                "title": "notebook"
              }
            },
            "end": 2,
            "boost" : 5
          }
        }
      ]
    }
  }
}

同样span queries不是analyzed所以你必须要照顾它,因为 notebook Notebook 会产生不同的结果。