搜索完整的建议和德国分析仪

问题描述 投票:1回答:1

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

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

分析仪工作正常,使用变音符号进行搜索很好。自动完成也是完美的。但是我通过搜索wie这个词来面对一个问题。

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

如果我搜索wie,我认为城市WienWiesbaden在回应中。但不幸的是,我没有得到回应。我认为wie因德国分析仪而受到限制。因为如果我搜索wiwies,我会收到有效回复。

同样的术语wasersieund看起来像德语中的词干。

如果我搜索wiewas,是否还需要任何其他配置来获得结果?

谢谢!

elasticsearch elasticsearch-5
1个回答
2
投票

The problem

按前缀搜索城市名称

“怎么样”应该找到“维也纳”或“威斯巴登”

Possible solution approach

对于用例,我建议使用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.)将查询分析器绑定到字段

"cities": {
        "type": "text",
        "fields": {
          "autocomplete": {
            "type": "text",
            "analyzer": "autocomplete_analyzer", <-- index time analyzer
            "search_analyzer": "autocomplete_search" <-- search time analyzer
          }
        }
      }

Why does the german analyzer not work

该分析仪专为德语文本设计,使用简单的算法来消除弯曲和形态。 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

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

© www.soinside.com 2019 - 2024. All rights reserved.