elasticsearch-使用通配符自定义词干覆盖

pzfprimi  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(328)

我在elasticsearch中实现了轻度英语词干分析。
我可以添加一个自定义的词干覆盖,例如“guitarist”=>“guitar”,但是我想添加这个作为一个一般规则,这样“guitarist”=>“guitar”,“violinist=>小提琴”等等。
不使用regex我能做到这一点吗?

tnkciper

tnkciper1#

对于任何研究类似问题的人来说,regex似乎是唯一的解决方案。下面的例子专门针对以“ist”结尾的单词。

  1. {
  2. "analysis": {
  3. "analyzer": {
  4. "my_analyzer": {
  5. "tokenizer": "standard",
  6. "char_filter": [
  7. "ist_filter"
  8. ],
  9. "filter": [
  10. "lowercase",
  11. "my_stem"
  12. ]
  13. }
  14. },
  15. "filter": {
  16. "my_stem": {
  17. "type": "stemmer",
  18. "language": "light_english"
  19. }
  20. },
  21. "char_filter": {
  22. "ist_filter": {
  23. "type": "pattern_replace",
  24. "pattern": "(.*)ist$",
  25. "replacement": "$1"
  26. }
  27. }
  28. }
  29. }

可以在模式中添加排除项,例如,下面将忽略“mist”和“twist”这两个词,但这仅适用于(非常)有限的排除项。

  1. "pattern": "^(?!m|tw)(.*)ist$"
展开查看全部

相关问题