Lucene 3.5在搜索时不支持中国的Russain Korean Languages

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lucene 3.5在搜索时不支持中国的Russain Korean Languages相关的知识,希望对你有一定的参考价值。

我正在使用Lucene 3.5 Standard Analyzer进行索引和搜索。它适用于除中文,日文和韩文之外的所有语言。我尝试过CJK Analyzer和中国分析仪。但仍然没有工作。索引正在正确创建。我们已经使用Luke工具验证了这一点。但是无法使用Luke工具和使用分析器的代码搜索上述语言单词。任何解决方案。

伊拉克航空公司               

+name:伊拉克航空公司~0.9     This  is the lucene query generated by the analyzer for this chinese word. But not returning result. But other languages and its corresponding query is returning results
答案

对于中文,有许多有用的第三方分析器,例如:

  1. mmseg4j
  2. IK-analyzer
  3. ansj_seg
  4. imdict-中国分析器

我推荐IK-analyzer,例如:将它添加到您的依赖项中:

    <dependency>
        <groupId>com.janeluo</groupId>
        <artifactId>ikanalyzer</artifactId>
        <version>2012_u6</version>
    </dependency>

示例代码:

public class LuenceFirst {
    public static void main(String[] args) throws IOException {
        Analyzer analyzer = new IKAnalyzer(); 
        TokenStream tokenStream = analyzer.tokenStream("", "伊拉克航空公司");

        CharTermAttribute charTermAttribute = tokenStream.addAttribute(CharTermAttribute.class);
        OffsetAttribute offsetAttribute = tokenStream.addAttribute(OffsetAttribute.class);
        tokenStream.reset();
        while (tokenStream.incrementToken()) {
            System.out.println("start→" + offsetAttribute.startOffset());
            System.out.println(charTermAttribute);
            System.out.println("end→" + offsetAttribute.endOffset()); 
        }
        tokenStream.close();
    }
}

输出为:start→0

伊拉克

end→3

start→3

航空公司

end→7

start→3

航空

end→5

start→5

公司

end→7

日语:

  1. koromoji
  2. lucene-gosen

以上是关于Lucene 3.5在搜索时不支持中国的Russain Korean Languages的主要内容,如果未能解决你的问题,请参考以下文章

lucene的分词器宝典

开源搜索技术的核心引擎 —— Lucene

Lucene/kibana查询 语法

Lucene的数值索引以及范围查询

如何使用 Lucene 做网站高亮搜索功能?

探秘ElasticSearch -lucene引擎搜索分析