2

TL;博士

是否可以让 Elasticsearch 在模糊查询中返回匹配的输入-shingle 以及匹配的文档?

例子:

假设我有一个带状疱疹:

"fulltext_shingle_filter":{
  "type": "shingle",
  "min_shingle_size": 2,
  "max_shingle_size": 3,
  "output_unigrams": false
}

该木瓦用于自定义搜索分析器:

"fulltext_shingle":{
  "type": "custom",
  "tokenizer": "standard",
  "filter":["fulltext_shingle_filter"]
}

索引被分析为关键字,如下所示:

"whitelist_keyword": {
  "type": "custom",
  "tokenizer": "keyword"
}

文件看起来像这样:

{
"_source": {
  "names": [
    "John Smith",
    "Smith, John"
  ]
},
{
"_source": {
  "names": [
    "Mr Wayne"
  ]
}

我们这样查询:

POST /someindex/_search
{
  "query": {
    "match": {
    "names": {
      "query": "Hi, my Name is John Smit, I like toast.",
      "analyzer": "fulltext_shingle",
      "fuzziness": 1
      }
    }
  }
}

这将使用我们的 fulltext_shingle-analyzer 拆分查询,并将模糊度 1 应用于 shingle “John Smit”等。Elasticsearch 然后返回包含“John Smith”的文档,因为 Levenshtein-Distance 等于 1。

现在,是否可以让 elasticsearch 在匹配文档旁边返回模糊测试之前使用的 input-shingle,即“John Smit”?

我唯一能想到的就是从根本上反转查询,即在启用带状疱疹的情况下索引查询文档,然后以相同的模糊性查询原始输出(“John Smith”)。但这对我来说似乎是一个非常容易出错和浪费资源的麻烦。

4

0 回答 0