我在 elasticsearch 上查询,查询是 apples。在我们的索引数据中,文本的呈现方式类似于苹果的。如果我像 apples 一样搜索,我没有得到任何结果。如果我搜索 apple's,我们会得到结果。但在我看来,如果我使用 apples 进行搜索,我也需要为 apple 的 查询提供相同的结果。有什么办法可以处理这类案件。
最佳答案
您可以通过以下方式设置 char_filter 来完成此操作:
PUT my_index
{
"settings": {
"analysis": {
"analyzer": {
"my_analyzer": {
"tokenizer": "keyword",
"char_filter": [
"my_char_filter"
]
}
},
"char_filter": {
"my_char_filter": {
"type": "mapping",
"mappings": [
"' => "
]
}
}
}
}
}
POST my_index/_analyze
{
"analyzer": "my_analyzer",
"text": "apple's"
}
这将导致:
{
"tokens": [
{
"token": "apples",
"start_offset": 0,
"end_offset": 7,
"type": "word",
"position": 0
}
]
}
您正在从索引中删除撇号,您可以成功搜索 apples 和 apple's
关于关于撇号的 Elasticsearch 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47628295/