gpt4 book ai didi

elasticsearch - 如何处理多字文字的自动完成功能?

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

我的输入文本是多词英语文本,因此我需要为该文本实现自动完成功能。

我最初查看search completion suggesters只是为了弄清楚那些只能匹配输入的前几个字符。这对于自动完成产品名称或地址非常有用,但在要求对输入文本中的任何单词进行自动完成时,此功能不是很有用。

之后,我设置了一个 edge_ngram 分析器,并查询以查找包含输入字符串的那些文档。那很好,但是我不知道如何使用此信息来提供自动完成的选项。

我可以使用highlighter来显示与查询匹配的单词。该数据又可以用来设置选项列表。这个解决方案似乎很笨拙,不是很优雅,我想知道通常如何解决这个问题?

不幸的是,我无法维护其他字段,其中可能包括文档的自动完成选项。

最佳答案

我目前正在使用查询的突出显示信息来构造自动完成选项。

我的查询:

{
"query": {
"match": {
"fields.content.auto": {
"query": "content co",
"analyzer": "standard"
}
}
},
"highlight": {
"fields": {
"fields.content.auto": {
"fragment_size": 0,
"number_of_fragments": 10,
"pre_tags" : [ "%ha%" ],
"post_tags" : [ "%he%" ]
}
}
},
"_source": ["uuid", "language"]
}

我的自动字段使用了 autocomplete分析器。
"auto": {
"type": "string",
"analyzer": "autocomplete"
}

这是我正在使用的索引配置:
{
"analysis": {
"filter": {
"my_stop": {
"type": "stop",
"stopwords": "_english_"
},
"autocomplete_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"my_stop",
"autocomplete_filter"
]
}
}
}
}

该解决方案的主要灵感来自 Search-as-you-type帖子。

我处理响应JSON,以获得自动完成选项。
高亮信息用于提取所有找到的 token 。接下来,通过将这些标记与用户已经输入的短语进行比较,将其用于构建潜在的自动完成短语。整洁的事情是可以应用停用词过滤器,因此停用词将永远不会被突出显示,从而也决不会用于自动完成建议。

可以找到此处理器的PoC Java代码 here

我不确定是否要使用此解决方案,但是无论如何我都希望共享它。

关于elasticsearch - 如何处理多字文字的自动完成功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47250772/

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