elasticsearch - Elasticsearch hunspell过多地削减了单词

标签 elasticsearch hunspell

考虑以下映射作为示例:

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可能会有用。这可以在关键字标记标记过滤器之前。

关于elasticsearch - Elasticsearch hunspell过多地削减了单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32994137/

相关文章:

emacs ispell 在 Latex 引号上中断

Win32 上的 Emacs 与 hunspell - 个人词典未保存

elasticsearch - Elasticsearch-按大于特定值的多个字段的总和进行过滤

elasticsearch - 使用 Elasticsearch Google 类型查询

elasticsearch - 文件节拍 : Send different logs from filebeat to different logstash Pipeline

dictionary - Hunspell, unmunch - 转储整个字典,编码错误

开放式拼写检查器的字典文件结构

docker - Elasticsearch Pod没有运行重启

elasticsearch - 没有为新添加的节点分配Elasticsearch分片