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”)。但这对我来说似乎是一个非常容易出错和浪费资源的麻烦。