假设我有超级碗,是elasticsearch中文档属性的值。查询超级碗如何匹配超级碗
我读过关于字母标记符和单词分隔符的文章,但两者似乎都解决不了我的问题。基本上,我希望能够将一个大单词的组合转换成有意义的词组合。
https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-letter-tokenizer.html
发布于 2017-08-24 14:42:10
我知道这已经很晚了,但是你可以使用同义词过滤器 --你可以定义超级碗和"s bowl","SuperBowl“等等。
发布于 2017-05-05 07:56:51
有一些方法可以做到这一点,而不改变您的实际索引。例如,如果您使用的是至少5.2 (其中引入了normalizers ),但它也可以是早期版本,但5.x使其更容易,您可以定义一个规范化器来降低文本的大小写,而不是更改它,然后在搜索时使用fuzzy查询来说明super和bowl之间的空间。不过,我的解决方案是您给出的这个示例的具体解决方案。与大多数情况下的Elasticsearch一样,人们需要考虑进入Elasticsearch的数据类型以及搜索时所需的数据。
无论如何,如果您对以下方法感兴趣:
DELETE test
PUT /test
{
"settings": {
"analysis": {
"normalizer": {
"my_normalizer": {
"type": "custom",
"char_filter": [],
"filter": ["lowercase", "asciifolding"]
}
}
}
},
"mappings": {
"test": {
"properties": {
"title": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "my_normalizer"
}
}
}
}
}
}
}
POST test/test/1
{"title":"Super Bowl"}
GET /test/_search
{
"query": {
"fuzzy": {
"title.keyword": "superbowl"
}
}
}https://stackoverflow.com/questions/43781866
复制相似问题