我需要它,以便其中带有句点的单词等于非句点变体。
我看到文档中有一个关于分析器和 token 过滤器的部分,但是我发现它很简洁,不确定如何去做。
最佳答案
使用char filter消除点,例如:
PUT /no_dots
{
"settings": {
"analysis": {
"char_filter": {
"my_mapping": {
"type": "mapping",
"mappings": [
".=>"
]
}
},
"analyzer": {
"my_no_dots_analyzer": {
"tokenizer": "standard",
"char_filter": [
"my_mapping"
]
}
}
}
},
"mappings": {
"test": {
"properties": {
"text": {
"type": "string",
"analyzer": "my_no_dots_analyzer"
}
}
}
}
}
并测试
GET /no_dots/_analyze?analyzer=my_no_dots_analyzer&text=J.J Abrams
返回:{
"tokens": [
{
"token": "JJ",
"start_offset": 0,
"end_offset": 3,
"type": "<ALPHANUM>",
"position": 1
},
{
"token": "Abrams",
"start_offset": 4,
"end_offset": 10,
"type": "<ALPHANUM>",
"position": 2
}
]
}
关于elasticsearch - 如何规范 Elasticsearch 查询中的周期(例如JJ Abrams == J.J Abrams)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28243831/