【发布时间】:2015-08-10 18:14:44
【问题描述】:
我的目标是,如果我有类似"s & p indices" 的索引,那么如果用户搜索s and p、s & p 或s p,我也可以提出这个建议。但是,& 似乎有些特殊之处,因为下面的同义词设置不适用于它。我的suggest index 有以下映射。
{
"settings": {
"analysis": {
"analyzer": {
"suggest_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [ "lowercase", "my_synonym_filter" ]
}
},
"filter": {
"my_synonym_filter": {
"type": "synonym",
"synonyms": [ "&, and", "foo, bar" ]
}
}
}
}
}
我的type 有以下映射
{
"properties" : {
"name" : { "type" : "string" },
"name_suggest" : {
"type" : "completion",
"index_analyzer" : "suggest_analyzer",
"search_analyzer" : "suggest_analyzer"
}
}
}
如果我索引以下对象:
{
"name" : "s & p indices",
"name_suggest" : {
"input" : [ "s & p indices"]
}
}
搜索s and 不会返回索引建议。但是,foo 和 bar 的同义词按预期工作。
我认为这可能与标准标记器在 & 上的标记方式有关,但我不知道如何解决这个问题。有没有办法让分词器排除 & 的拆分和/或区别对待?
【问题讨论】:
-
当你索引
s & p文档时你索引什么? -
@IanGabes 我将要索引的对象添加到 OP。为了这个问题,很简单
标签: elasticsearch tokenize autosuggest