2010-10-06 82 views
20

刚开始使用Lucene.Net。我使用标准分析器对100,000行进行了索引,运行了一些测试查询,并注意到如果原始词汇是单数的,则多个查询不会返回结果。我了解雪球分析仪增加了支持支持,这听起来不错。但是,我想知道是否有任何缺点与雪球超过标准?我是否因此而失去任何东西?有没有其他的分析仪可以考虑?Lucene标准分析器vs雪球

+0

如果您使用雪球分析仪,您应该得到单数/复数的结果,因为雪球会将它们归一化为相同的形式。你确定你使用相同的分析器来创建索引并查询它吗? – Skarab 2010-10-10 11:03:44

回答

18

是的,通过使用诸如雪球之类的词干,你正在丢失关于文本原始形式的信息。有时候这会很有用,有时候不会。例如,Snowball会将“组织”变成“器官”,因此对“组织”的搜索将返回带有“器官”的结果,而不会有任何计分处罚。

这是否适合您取决于您​​的内容以及您支持的查询类型(例如,搜索非常基本,还是非常复杂的用户,并且使用您的搜索来准确地筛选结果)。你也可能想看看不那么积极的词干,如KStem

+0

我刚想通了,你也可以做一个像这样的“袋鼠〜”这样的模糊搜索,它会返回这个单词的单数形式,尽管它似乎需要更长的时间来处理查询。 – alchemical 2010-10-06 19:02:39

+0

@alchemical:我真的会建议不要这样做。 〜是一个非常慢的操作符,如果你的用户做了像搜索一个短语的东西,你有点拧。为什么“袋鼠”被存储为“袋鼠”这么糟糕? – Xodarap 2010-10-06 21:49:00

+0

好的,这是很好的知道 - 使用KStem你需要Solr吗?你需要使用Lucene源代码来整合它吗? – alchemical 2010-10-06 21:59:42

4

我刚完成一个分析器,执行lemmaization。这与词干类似,除了它使用上下文来确定单词的类型(名词,动词等)并使用该信息来推导词干。它还保留索引中单词的原始形式。也许my library可以对你有用。不过,它需要Lucene Java,而且我不知道任何C#/ .NET的解迷器。

6

snowball分析仪会增加您的召回率,因为它比标准分析仪更具侵略性。所以你需要评估你的搜索结果,看看你的数据是否需要增加recall or precision