我在asp.net应用程序中使用lucene.net和雪球分析器。
使用我正在使用的特定语言,我遇到以下问题: 对于两个具有不同含义的特定单词后,结果是相同的,因此搜索它们中的任何一个都会产生两种结果。
我怎样才能教导分析仪不要阻止这两个词,或者虽然阻止它们,但要知道它们有不同的含义。
答案 0 :(得分:0)
我在内存中工作,但我记得在其中一个构造函数中你可以传递一个停用词数组,这将阻止传入的单词被阻止。
答案 1 :(得分:0)
使用Lucene 4.0,EnglishAnalyzer
现在具备此功能,因为它具有constructor which takes a stemExclusionSet
当然,Lucene.Net还没有达到Lucene 4,这样做的好多了。
但是,EnglishAnalyzer使用KeywordMarkerFilter
来完成此操作。因此,您可以创建自己的Analyzer,覆盖tokenStream方法,并在KeywordMarkerFilter
之前添加SnowballFilter
链。
类似的东西:
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = new StandardTokenizer(reader);
result = new StandardFilter(result);
result = new LowerCaseFilter(result);
if (stopSet != null)
result = new StopFilter(result, stopSet);
result = new KeywordMarkerFilter(result, stemExclusionSet);
result = new SnowballFilter(result, name);
return result;
}
您需要构建自己的stemExclusionSet
(请参阅CharArraySet)。