1
想我保存了一组字符串(在Lucene的每个文件将是单个单词),然后输入一个词W,我想检索所有文件不仅匹配字W而且这些文件,其茎版本还W.使用Lucene搜索与词干启用
匹配此外,假设输入的词W,我会想接这个案子的照顾那里是这个词的词根版本相匹配W¯¯以及文档。
会写我自己的自定义分析,并返回一个PorterStemFilter足够?我是否需要编写这个类并在代码中将其作为分析器引用?
想我保存了一组字符串(在Lucene的每个文件将是单个单词),然后输入一个词W,我想检索所有文件不仅匹配字W而且这些文件,其茎版本还W.使用Lucene搜索与词干启用
匹配此外,假设输入的词W,我会想接这个案子的照顾那里是这个词的词根版本相匹配W¯¯以及文档。
会写我自己的自定义分析,并返回一个PorterStemFilter足够?我是否需要编写这个类并在代码中将其作为分析器引用?
写有分析仪链中的词干应该足够了一个自定义的分析。
下面是一个使用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版本的示例代码。
感谢。这有助于。我在这里有一个疑问。如果两个单词出现在同一个单词中,是不是会导致精度问题? – 2013-03-18 18:03:24
是,利用所产生将改善的精确度为代价召回。程序员/设计师应根据问题领域的特定要求作出决定。 – phani 2013-03-18 18:51:03