Elasticsearch-如何仅针对完全短语匹配突出显示停用词?

时间:2018-12-05 00:31:03

标签: elasticsearch highlight stop-words

是否可以突出显示短语中出现的停用词,而不能突出显示单独出现的停用词?

例如,我要突出显示“指环王”,“指环”或“领主”。但是我不希望Elasticsearch突出显示“ of”或“ the”(如果它们单独出现)。

我在索引设置中使用english_stop分析器。该分析器会删除所有停用词,因此不会在搜索结果中突出显示任何停用词。但是,如果我删除english_stop分析器,那么即使它们单独出现,它也总是突出显示“ of”,“ the”之类的停用词。我无法使用英语分析器添加其他字段,因为我有很多文档,而重新索引成本太高。

是否有一种方法可以仅在词组匹配中突出显示停用词,而无需更改索引架构?

我的索引模板:

  "template": "index_name",
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "english": {
            "tokenizer": "tokenizer_name",
            "filter": [
              "standard",
              "lowercase",
              "english_stop",
              "kstem"
            ]
          },

这是搜索查询“指环王”中突出显示的结果

  

指环领主是由英国作家J. R. R. Tolkien撰写的史诗般的高幻想小说。故事的开始是托尔金1937年的奇幻小说《霍比特人》的续集,但最终发展成更大的作品。 《指环王》的领主写于1937年至1949年之间,是最畅销的小说之一

1 个答案:

答案 0 :(得分:0)

如果使用的是查询字符串,则使用statement_slop属性,该属性将仅突出显示铃声和领主。我们遇到了同样的问题,并且解决了该问题,但是这也存在局限性,ES不能区分“月球上的人”和“月球上的人”。它将突出显示人和月亮的出现,因为“ in”和“ on”都是停用词。

https://www.elastic.co/guide/en/elasticsearch/guide/master/stopwords-phrases.html#_stopwords