我的fuzzy_like_this查询中有一个uissue 如果我的字符串包含任何撇号,那么它不会搜索这些值包含在db。
中样品
citrus's =>搜索字符串 但结果没有选择撇号值而是变得像 柑橘,某某.. 请帮帮我 提前致谢
答案 0 :(得分:2)
弹性搜索接受Apostrophe.so请仔细检查您的查询
答案 1 :(得分:1)
6个unicode字符可以代表文档中的“撇号”。它可以是u0027,u2018,u2019,u201B,u0091或u0092
在六个中,Elasticsearch将三个unicode字符识别为'撇号':u0027,u2018和u2019。
所以,我认为你的撇号必须是最后3个unicode字符,Elasticsearch将其视为单词边界。因此,柑橘只会被标记为柑橘。
在分析器中添加char_filter可能会对您有所帮助。所有六个字符都将被适当的'撇号'取代。
curl -XPUT http://localhost:9200/index_name(your_index) -d '
{
"settings": {
"analysis": {
"char_filter": {
"mycharfilter": {
"type": "mapping",
"mappings": [
"\\u0091=>\\u0027",
"\\u0092=>\\u0027",
"\\u2018=>\\u0027",
"\\u2019=>\\u0027",
"\\u201B=>\\u0027"
]
}
},
"analyzer": {
"quotes_analyzer": {
"tokenizer": "standard",
"char_filter": [ "mycharfilter" ]
}
}
}
}
}'