gpt4 book ai didi

elasticsearch - 使用完整的建议器和德语分析器进行搜索

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

我创建了一个带有建议字段和完成类型的简单索引。我索引了一些城市名称。对于建议字段,我使用德国分析仪。

PUT city_de
{
"mappings": {
"city" : {
"properties": {
"name" : {
"type": "text",
"analyzer": "german"
},
"suggest" : {
"type": "completion",
"analyzer": "german"
}
}
}
}
}

分析器工作正常,使用变音符号搜索很好。自动补全也很完美。但是我在搜索 wie 时遇到了一个问题。 .

假设我有两个文件 WiesbadenWien与建议完成期限同名。

如果我搜索 wie我假设城市 WienWiesbaden在响应中。但不幸的是,我没有得到任何回应。我想 wie由于德国分析仪有限制。因为如果我搜索 wiwies我得到有效的答复。

术语 was 也是如此, er , sie , und这看起来像德语中的词干。

如果我搜索 wie,是否需要任何其他配置才能获得结果?或 was ?

谢谢!

最佳答案

问题

按前缀搜索城市名称

"wie"应该找到 "Wien"或 "Wiesbaden"

可能的解决方法

对于用例,我建议使用 edge n-gram https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-edgengram-tokenizer.htmlASCII folding条款https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-asciifolding-tokenfilter.html .

例子

wien
token position start offset end offset
w 0 0 1
wi 1 0 2
wie 2 0 3
wien 3 0 4



wiesbaden
token position start offset end offset
w 0 0 1
wi 1 0 2
wie 2 0 3
wies 3 0 4
...
wiesbaden 8 0 9

请记住,系统现在必须以不对称的方式工作。不应分析查询(使用关键字),但必须分析索引中的数据。

有两种方法可以实现这一点:
1.) 添加查询分析器以使用查询
2.) 将查询分析器绑定(bind)到字段
"cities": {
"type": "text",
"fields": {
"autocomplete": {
"type": "text",
"analyzer": "autocomplete_analyzer", <-- index time analyzer
"search_analyzer": "autocomplete_search" <-- search time analyzer
}
}
}

为什么德语分析仪不起作用

该分析器专为德语文本而设计,并使用一种简单的算法来去除曲折和形态。
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html#german-analyzer
这是此标记器生成的典型术语的示例
Hallo hier ist der Text über Wiesbaden und Wien. Es scheint angebracht über Wände und Wandern zu sprechen. 

hallo 0 0 5
text 4 19 23
wiesbad 6 29 38
wien 8 43 47
scheint 10 52 59
angebracht 11 60 70
wand 13 76 81
wandern 15 86 93
sprech

如果它适用于城市名称,这只是巧合。

关于elasticsearch - 使用完整的建议器和德语分析器进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49064848/

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