gpt4 book ai didi

elasticsearch - 用模糊和ngram突出显示

转载 作者:行者123 更新时间:2023-12-02 22:24:28 24 4
gpt4 key购买 nike

我想这个话题的标题让您很受宠:D

我使用edge_ngram并突出显示以构建自动完成搜索。我在查询中添加了模糊性,以允许用户拼写错误的搜索,但是突出显示了一点。

当我写Sport时,我得到的是:

<em>Spor</em>t
<em>Spor</em>t mécanique
<em>Spor</em>t nautique

我猜是因为它与ngram标记程序生成的标记 spor相匹配。

查询:
{
"query": {
"bool": {
"should": [
{
"match": {
"name": {
"query": "sport",
"operator": "and",
"fuzziness": "AUTO"
}
}
},
{
"match_phrase_prefix": {
"name.raw": {
"query": "sport"
}
}
}
]
}
},
"highlight": {
"fields": {
"name": {
"term_vector": "with_positions_offsets"
}
}
}
}

和映射:
{
"settings": {
"analysis": {
"analyzer": {
"partialAnalyzer": {
"type": "custom",
"tokenizer": "ngram_tokenizer",
"filter": ["asciifolding", "lowercase"]
},
"keywordAnalyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": ["asciifolding", "lowercase"]
},
"searchAnalyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": ["asciifolding", "lowercase"]
}
},

"tokenizer": {
"ngram_tokenizer": {
"type": "edge_ngram",
"min_gram": "1",
"max_gram": "15",
"token_chars": [ "letter", "digit" ]
}
}
}
},

"mappings": {
"place": {
"properties": {
"name": {
"type": "string",
"index_analyzer": "partialAnalyzer",
"search_analyzer": "searchAnalyzer",
"term_vector": "with_positions_offsets",
"fields": {
"raw": {
"type": "string",
"analyzer": "keywordAnalyzer"
}
}
}
}
}
}
}

我试图在查询中添加一个新的不带有模糊性的match子句,以尝试在关键字之前将关键字 与模糊性匹配,但是它什么都没有改变。
'match': {
'name': {
'query': 'sport',
'operator': 'and'
}

知道我该如何处理吗?

问候,拉斐尔

最佳答案

你可以用highlight_query做到这一点

在突出显示查询中尝试此操作。

"highlight": {
"fields": {
"name": {
"term_vector": "with_positions_offsets",
"highlight_query": {
"match": {
"name.raw": {
"query": "spotr",
"fuzziness": 2
}
}
}
}
}
}

希望对您有所帮助。

关于elasticsearch - 用模糊和ngram突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33790478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com