2013-03-18 119 views
1

想我保存了一组字符串(在Lucene的每个文件将是单个单词),然后输入一个词W,我想检索所有文件不仅匹配字W而且这些文件,其茎版本还W.使用Lucene搜索与词干启用

匹配此外,假设输入的词W,我会想接这个案子的照顾那里是这个词的词根版本相匹配W¯¯以及文档。

会写我自己的自定义分析,并返回一个PorterStemFilter足够?我是否需要编写这个类并在代码中将其作为分析器引用?

回答

2

写有分析仪链中的词干应该足够了一个自定义的分析。

下面是一个使用PorterStemFilter在Lucene的4.1

class MyAnalyzer extends Analyzer { 
    @Override 
    protected TokenStreamComponents createComponents(String fieldName, Reader reader) { 
    Tokenizer source = new LowerCaseTokenizer(version, reader); 
    return new TokenStreamComponents(source, new PorterStemFilter(source)); 
    } 
} 

请注意,您必须使用相同的自定义分析,同时查询其用于索引以及示例代码。

你可能会发现你的相应PorterStemFilter文档中的Lucene版本的示例代码。

+0

感谢。这有助于。我在这里有一个疑问。如果两个单词出现在同一个单词中,是不是会导致精度问题? – 2013-03-18 18:03:24

+1

是,利用所产生将改善的精确度为代价召回。程序员/设计师应根据问题领域的特定要求作出决定。 – phani 2013-03-18 18:51:03