【问题标题】:Elasticsearch - How to highlight stop words only for exact phrase match?Elasticsearch - 如何仅突出显示完全匹配的停用词?
【发布时间】:2019-05-06 11:59:48
【问题描述】:

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

例如,我想突出显示“指环王”、“指环王”或“领主”。但我不希望 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 年,是最畅销的小说之一

【问题讨论】:

    标签: elasticsearch highlight stop-words


    【解决方案1】:

    如果您使用查询字符串,则使用phrase_slop 属性,它只会突出显示环和领主。我们遇到了同样的问题,这解决了它,但这也有一个限制,即 ES 无法区分“月​​球上的人”和“月球上的人”。它将突出显示人和月亮的出现,因为“in”和“on”都是停用词。

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

    【讨论】:

      猜你喜欢
      • 2017-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 2016-11-30
      • 2020-05-28
      • 2017-07-17
      相关资源
      最近更新 更多