Elasticsearch hunspell 切词太多
Elasticsearch hunspell cuts words too much
以下列映射为例:
PUT /test
{
"settings": {
"analysis": {
"filter": {
"my_hunspell": {
"type": "hunspell",
"language": "en_GB"
}
},
"analyzer": {
"my_test": {
"type" : "custom",
"tokenizer": "lowercase",
"filter": ["my_hunspell"]
}
}
}
}
}
我已经从 Mozilla 官方页面下载了 hunspell 词典。
现在的问题是一些词,比如啤酒被过度分析了。以下查询将啤酒转化为蜜蜂,这不完全正确?
POST /test/_analyze?analyzer=my_test&text=beer
{
"tokens": [
{
"token": "bee",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 1
}
]
}
Hunspell 语法很难理解。可以做些什么来避免这种行为?是否可以保留一些单词或添加一些规则?
如果您可以提出要保留的单词列表,那么 Keyword Marker Token Filter 可能值得研究。看起来这会防止你想要保护的词被阻止。您更新后的分析器可能类似于:
{
"settings": {
"analysis": {
"filter": {
"my_hunspell": {
"type": "hunspell",
"language": "en_GB"
},
"protect_my_words": {
"type": "keyword_marker",
"keywords_path": <PATH TO TEXT FILE WITH THE WORDS>
}
},
"analyzer": {
"my_test": {
"type" : "custom",
"tokenizer": "lowercase",
"filter": ["protect_my_words", "my_hunspell"]
}
}
}
}
}
还有 Pattern Replace Token Filter 如果您确实想要转换特定的单词或模式,它可能会很有用。这可以在关键字标记标记过滤器之前。
以下列映射为例:
PUT /test
{
"settings": {
"analysis": {
"filter": {
"my_hunspell": {
"type": "hunspell",
"language": "en_GB"
}
},
"analyzer": {
"my_test": {
"type" : "custom",
"tokenizer": "lowercase",
"filter": ["my_hunspell"]
}
}
}
}
}
我已经从 Mozilla 官方页面下载了 hunspell 词典。
现在的问题是一些词,比如啤酒被过度分析了。以下查询将啤酒转化为蜜蜂,这不完全正确?
POST /test/_analyze?analyzer=my_test&text=beer
{
"tokens": [
{
"token": "bee",
"start_offset": 0,
"end_offset": 4,
"type": "word",
"position": 1
}
]
}
Hunspell 语法很难理解。可以做些什么来避免这种行为?是否可以保留一些单词或添加一些规则?
如果您可以提出要保留的单词列表,那么 Keyword Marker Token Filter 可能值得研究。看起来这会防止你想要保护的词被阻止。您更新后的分析器可能类似于:
{
"settings": {
"analysis": {
"filter": {
"my_hunspell": {
"type": "hunspell",
"language": "en_GB"
},
"protect_my_words": {
"type": "keyword_marker",
"keywords_path": <PATH TO TEXT FILE WITH THE WORDS>
}
},
"analyzer": {
"my_test": {
"type" : "custom",
"tokenizer": "lowercase",
"filter": ["protect_my_words", "my_hunspell"]
}
}
}
}
}
还有 Pattern Replace Token Filter 如果您确实想要转换特定的单词或模式,它可能会很有用。这可以在关键字标记标记过滤器之前。