多语言 ElasticSearch 支持

Posted

技术标签:

【中文标题】多语言 ElasticSearch 支持【英文标题】:Multi-Language ElasticSearch Support 【发布时间】:2014-03-09 19:13:45 【问题描述】:

我正在索引来自世界各地但主要是泰国的消息。索引消息很可能包含英语或泰语。

有谁知道设置 ES 索引的最佳方法,以便它为泰语和英语搜索返回良好的搜索结果?

我已尝试使用此设置:


    "settings": 
        "analysis" : 
            "analyzer" : 
                "default" : 
                    "type" : "cjk"
                
            
        
    

用泰语搜索时,cjk 分析器的结果不是很好。我实际上不知道为什么会这样,但非常感谢任何帮助!

【问题讨论】:

【参考方案1】:

cjk 分析器用于为 中文日文韩文 生成二元组,但不用于泰文。由于泰语是一种非空格语言,因此该分析器不会对句子进行标记。推荐用于泰语的分析器是thai 分析器。


    "settings": 
        "analysis" : 
            "analyzer" : 
                "default" : 
                    "type" : "thai"
                
            
        
    

还有其他选项可以使用提供icu_tokenizerICU 分析插件 分析泰语数据。此标记器支持泰语老挝中文日文韩文语言。你可以通过这个链接找到插件:ICU Analysis Plugin

安装插件后,您可以通过这种方式使用分词器:


    "settings": 
        "analysis" : 
            "analyzer" : 
                "default" : 
                    "type": "custom",
                    "tokenizer": "icu_tokenizer"
                
            
        
    

【讨论】:

第二种方法(ICU tokenizer)似乎对我有用。谢谢!【参考方案2】:

您可以实现自定义泰语分析器,如下所述: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html#thai-analyzer

而且,为了让它更有用,还添加一个新过滤器,以便使用 Apache Lucene 中的 org.apache.lucene.analysis.th.ThaiWordFilterFactory,方法如下:

curl -X PUT http://localhost:9200/test -d '
  "settings":
    "analysis":
      "analyzer":
        "default":
          "type":"custom",
          "tokenizer":"standard",
          "filters":[ "standard","thai","lowercase", "stop", "kstem" ]
        
      
    ,
    "filter": 
      "thai": 
        "type": "org.apache.lucene.analysis.th.ThaiWordFilterFactory"
      
    
  
’

然后,你可以测试:

http://localhost:9200/test/_analyze?analyzer=thai&text=สวัสดี+hello

希望对你有所帮助。

【讨论】:

以上是关于多语言 ElasticSearch 支持的主要内容,如果未能解决你的问题,请参考以下文章

「GoCN酷Go推荐」Go高性能多语言NLP和分词库——gse

Elasticsearch:利用搜索提高医疗保健公平 - 用多语言 NLP 模型和分析来改善最终用户体验

iOS-生成国际化包-配置App多语言支持

WPF使用X:Static做多语言支持

WPF使用X:Static做多语言支持

ThinikPHP框架对多语言的支持