关于撇号的 Elasticsearch 查询
Elasticsearch query on apostrophes
我在 elasticsearch 上查询,查询是 apples。在我们的索引数据中,文本呈现为 apple's。如果我像 apples 这样搜索,我没有得到任何结果。如果我搜索 apple's,我们会得到结果。但在我看来,如果我使用 apples 进行搜索,我也需要 apple's 查询的相同结果。有什么办法可以处理这类案件。
感觉你需要一个模糊搜索,如果我没说错的话。请查看这篇文章:https://www.elastic.co/blog/found-fuzzy-search 如果这不是您要找的内容,请告诉我们。
您可以通过以下方式设置 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 上查询,查询是 apples。在我们的索引数据中,文本呈现为 apple's。如果我像 apples 这样搜索,我没有得到任何结果。如果我搜索 apple's,我们会得到结果。但在我看来,如果我使用 apples 进行搜索,我也需要 apple's 查询的相同结果。有什么办法可以处理这类案件。
感觉你需要一个模糊搜索,如果我没说错的话。请查看这篇文章:https://www.elastic.co/blog/found-fuzzy-search 如果这不是您要找的内容,请告诉我们。
您可以通过以下方式设置 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