Lucene.Net的新手 哪个是Lucene.Net中最好的分析器? 另外,我想知道如何使用停用词和词干功能?
答案 0 :(得分:1)
我也是Lucene.Net的新手,但我知道Simple Analyzer会省略任何停用词,并为所有令牌/作品编制索引。
这里有一些Lucene信息的链接,顺便说一句,.NET版本几乎是完美的,逐字节重写Java版本,因此Java文档在大多数情况下应该可以正常工作:{{3} }。那里有关于三种分析仪的部分,简单,停止和标准。
我不确定Lucene.Net如何处理词干,但是这个链接http://darksleep.com/lucene/演示了如何用Java创建自己的Analyzer,并使用PorterStemFilter进行词干化。
... [T]他的Porter词干算法(或“Porter stemmer”)是一个从英语单词中删除更常见的形态和拐点结尾的过程
我希望这有用。
答案 1 :(得分:0)
我找到的最好的分析仪是StandardAnalyzer,您也可以在其中指定停用词。 例如: -
string indexFileLocation = @"C:\Index";
string stopWordsLocation = @"C:\Stopwords.txt";
var directory = FSDirectory.Open(new DirectoryInfo(indexFileLocation));
Analyzer analyzer = new StandardAnalyzer(
Lucene.Net.Util.Version.LUCENE_29, new FileInfo(stopWordsLocation));
答案 2 :(得分:0)
这取决于您的要求。如果您的要求非常简单 - 例如大小写不敏感,非阻塞搜索 - 然后StandardAnalyzer是一个不错的选择。如果您查看Analyzer类并熟悉过滤器,特别是TokenFilter,您可以通过滚动自己的分析器来exert an enormous amount of control。
干细胞很棘手,重要的是要深入了解你真正需要什么类型的干细胞。我使用过Snowball阻尼器。例如,“政策”和“警察”一词在英国雪球词干中具有相同的词根,并且当搜索词“警察”不那么热时,会对具有“政策”的文档进行点击。我已经实施了支持词干和非词干搜索的策略,以便可以避免,但理解其影响非常重要。
要小心像停止词这样的诱惑。如果您需要搜索“要成为或不成为”这一短语并启用标准停用词,搜索将无法找到包含该短语的文档。