Elastic Suggesters 中的元音变音
Umlaut in Elastic Suggesters
我目前正在尝试设置一个类似于 google 拼写错误更正的建议器。我将 Elastic Suggesters 与以下查询一起使用:
{
"query": {
"match": {
"name": "iphone hüle"
}
},
"suggest": {
"suggest_name": {
"text": "iphone hüle",
"term": {
"field": "name"
}
}
}
}
它产生以下建议:
"suggest": {
"suggest_name": [
{
"text": "iphone",
"offset": 0,
"length": 6,
"options": []
},
{
"text": "hule",
"offset": 7,
"length": 4,
"options": [
{
"text": "hulle",
"score": 0.75,
"freq": 162
},
...
{
"text": "hulk",
"score": 0.75,
"freq": 38
}
]
}
]
}
现在我遇到的问题是在选项内和建议内的返回文本中。我提交的文本和返回的文本应该是 "hüle" 而不是 "hule"。此外,返回的选项文本实际上应该是 "hülle" 而不是 "hulle"。当我对查询和建议者使用相同的字段时,我想知道为什么变音符号只在建议者中丢失,而在常规查询结果中却没有。
在这里查看查询结果:
"_source": {
...
"name": "Ladegerät für iPhone",
"manufacturer": "Apple",
}
您在查询结果中返回的数据,即
"name": "Ladegerät für iPhone"
是该字段存储的内容。这正是您的源数据。然而,搜索和建议者显然也在倒排索引上工作,其中包含由分析器按摩的标记。您很可能正在使用折叠变音符号的分析器。
很奇怪我昨天和一位同事讨论过这个问题。我们得出的结论是,我们可能需要一个单独的字段,索引但不存储,我们将非规范化标记索引到其中。我们想用它来获取建议词。此外,它可能是一个我们可以对其进行精确搜索的功能,即确实在 Müller 和 Mueller、Foto 和 Photo、Rene 和 René 之间产生差异的搜索。
我目前正在尝试设置一个类似于 google 拼写错误更正的建议器。我将 Elastic Suggesters 与以下查询一起使用:
{
"query": {
"match": {
"name": "iphone hüle"
}
},
"suggest": {
"suggest_name": {
"text": "iphone hüle",
"term": {
"field": "name"
}
}
}
}
它产生以下建议:
"suggest": {
"suggest_name": [
{
"text": "iphone",
"offset": 0,
"length": 6,
"options": []
},
{
"text": "hule",
"offset": 7,
"length": 4,
"options": [
{
"text": "hulle",
"score": 0.75,
"freq": 162
},
...
{
"text": "hulk",
"score": 0.75,
"freq": 38
}
]
}
]
}
现在我遇到的问题是在选项内和建议内的返回文本中。我提交的文本和返回的文本应该是 "hüle" 而不是 "hule"。此外,返回的选项文本实际上应该是 "hülle" 而不是 "hulle"。当我对查询和建议者使用相同的字段时,我想知道为什么变音符号只在建议者中丢失,而在常规查询结果中却没有。
在这里查看查询结果:
"_source": {
...
"name": "Ladegerät für iPhone",
"manufacturer": "Apple",
}
您在查询结果中返回的数据,即
"name": "Ladegerät für iPhone"
是该字段存储的内容。这正是您的源数据。然而,搜索和建议者显然也在倒排索引上工作,其中包含由分析器按摩的标记。您很可能正在使用折叠变音符号的分析器。
很奇怪我昨天和一位同事讨论过这个问题。我们得出的结论是,我们可能需要一个单独的字段,索引但不存储,我们将非规范化标记索引到其中。我们想用它来获取建议词。此外,它可能是一个我们可以对其进行精确搜索的功能,即确实在 Müller 和 Mueller、Foto 和 Photo、Rene 和 René 之间产生差异的搜索。