elasticsearch - 在同一索引中使用不同的词干

标签 elasticsearch lexical-analysis

我正在建立字典,并希望将elasticsearch用作搜索引擎。它应该支持多种语言,所以我的数据库看起来类似于:

| left_lang | right_lang | left_word | right_word |
| de        | en         | Schuh     | shoe       |
| da        | de         | sko       | Schuh      |

可以在哪个级别上定义不同的分析器设置(如词干分析器等)?可以为文档的每个字段设置不同的设置吗?例如。在第一个文档中,将left_word设置为德语设置,将right_words设置为英语设置,在第二个文档中,将丹麦语设置为left_words,将德语设置为right_words?还是可以只在类型或索引级别定义这些?

最佳答案

是的,您可以按字段定义这些设置。您甚至可以使用“Multi-field”映射定义使用多种语言设置分析的字段。

{
  "settings":{
     "index":{
        "analysis":{
           "analyzer":{
              "analyzer_english":{
                 "tokenizer":[...],
                 "filter":[...]
              },
              "analyzer_german":{
                 "tokenizer":[...],
                 "filter":[...]
              }
           }
        }
     }
  },
  "mappings":{
     "test":{
        "properties":{
           "left_word":{
              "analyzer":"analyzer_german",
              "type":"string"
           },
           "right_word":{
              "analyzer":"analyzer_english",
              "type":"string"
           },
           "combo_word":{
              "type":"multi_field",
              "fields":{
                 "combo_word":{
                    "analyzer":"analyzer_german",
                    "type":"string"
                 },
                 "combo_english":{
                    "analyzer":"analyzer_english",
                    "type":"string"
                 }
              }
           }
        }
     }
  }
}

关于elasticsearch - 在同一索引中使用不同的词干,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802930/

相关文章:

java - 索引未知字段时强制使用字符串类型

c++ - 检查一个序列是否由两个相同的序列组成

php - 实现编译为 PHP 的元语言的最佳方法

elasticsearch - Logstash:时间戳模式

elasticsearch - 在Elasticsearch中正确折叠ASCII字符

lucene - 带有停用词的模糊搜索在Lucene/ElasticSearch中产生意外结果

elasticsearch - 将重点放在应过滤器上

parsing - 词法分析器和解析器的职责

lexical-analysis - 带 C 的词法分析器,新行标记

algorithm - 作为有限状态机的通用语言解析器