我有一个Elasticsearch索引,当对搜索应用突出显示时,它会从字段中删除字符。

例:

GET /myindex/_search
{
  "query": {
    "bool": {
      "must": {
        "multi_match": {
          "query": "greene and associates",
          "fuzziness" : "AUTO",
          "fields": [
            "name"
          ]
        }
      }
    }
  },
  "highlight" : {
        "fields" : {
            "name" : {}
        }
    }
}

返回以下内容:
{
     "_index" : "myindex",
         ...
      "name" : "A. A. Greene & Associates",
      ...
     },
     "highlight" : {
       "name" : [
         "<em>Greene</em> & <em>Associates</em>"
       ]
     }
}

我希望结果是
{
      "_index" : "myindex",
          ...
       "name" : "A. A. Greene & Associates",
        ...
      },
      "highlight" : {
        "name" : [
          "A. A. <em>Greene</em> & <em>Associates</em>"
        ]
      }
}

我在此查询中有什么错?无论我尝试什么,都无法获得“AA”。返回最突出的结果。

我们正在运行v7.4,但我已搜索与此问题相关的其他人,但尚未找到任何东西。

这是为索引定义字段的方式:
"name" : {
          "type" : "text",
          "boost" : 3.0,
          "fields" : {
            "raw" : {
              "type" : "keyword"
            },
            "suggest" : {
              "type" : "completion",
              "analyzer" : "simple",
              "preserve_separators" : true,
              "preserve_position_increments" : true,
              "max_input_length" : 50
            }
          }
        }

最佳答案

我发现了我所缺少的。默认的荧光笔是统一荧光笔,它将文本分成句子(名称中的句点是合格的)。
我将荧光笔类型更改为“普通”,并且可以正常工作。

新查询:

GET /myindex/_search
{
  "query": {
    "bool": {
      "must": {
        "multi_match": {
          "query": "greene and associates",
          "fuzziness" : "AUTO",
          "fields": [
            "name"
          ]
        }
      }
    }
  },
  "highlight" : {

        "fields" : {
            "name" : {"type" : "plain"}

        }
    }
}

关于elasticsearch - Elasticsearch突出显示字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58438454/

10-12 04:01
查看更多