刚开始使用Lucene.Net。我使用标准分析器对100,000行进行了索引,运行了一些测试查询,并注意到如果原始词汇是单数的,则多个查询不会返回结果。我了解雪球分析仪增加了支持支持,这听起来不错。但是,我想知道是否有任何缺点与雪球超过标准?我是否因此而失去任何东西?有没有其他的分析仪可以考虑?Lucene标准分析器vs雪球
回答
是的,通过使用诸如雪球之类的词干,你正在丢失关于文本原始形式的信息。有时候这会很有用,有时候不会。例如,Snowball会将“组织”变成“器官”,因此对“组织”的搜索将返回带有“器官”的结果,而不会有任何计分处罚。
这是否适合您取决于您的内容以及您支持的查询类型(例如,搜索非常基本,还是非常复杂的用户,并且使用您的搜索来准确地筛选结果)。你也可能想看看不那么积极的词干,如KStem。
我刚想通了,你也可以做一个像这样的“袋鼠〜”这样的模糊搜索,它会返回这个单词的单数形式,尽管它似乎需要更长的时间来处理查询。 – alchemical 2010-10-06 19:02:39
@alchemical:我真的会建议不要这样做。 〜是一个非常慢的操作符,如果你的用户做了像搜索一个短语的东西,你有点拧。为什么“袋鼠”被存储为“袋鼠”这么糟糕? – Xodarap 2010-10-06 21:49:00
好的,这是很好的知道 - 使用KStem你需要Solr吗?你需要使用Lucene源代码来整合它吗? – alchemical 2010-10-06 21:59:42
我刚完成一个分析器,执行lemmaization。这与词干类似,除了它使用上下文来确定单词的类型(名词,动词等)并使用该信息来推导词干。它还保留索引中单词的原始形式。也许my library可以对你有用。不过,它需要Lucene Java,而且我不知道任何C#/ .NET的解迷器。
snowball分析仪会增加您的召回率,因为它比标准分析仪更具侵略性。所以你需要评估你的搜索结果,看看你的数据是否需要增加recall or precision。
- 1. 标准分析Lucene的
- 2. Java lucene标准分析器的默认分隔符?
- 3. ElasticSearch:使用雪球分析仪
- 4. 如何设置用于PhraseQuery搜索的Lucene标准分析器?
- 5. 使用标准分析器在Lucene中获取精确匹配?
- 6. ElasticSearch启用雪球分析器和字段上的同义词
- 7. Lucene标准分析仪在时间段上分割
- 8. Lucene分析器的名字
- 9. lucene标准分析器是否删除停用词并具有阻止功能?
- 10. Elasticsearch雪球分析仪需要精确的词
- 11. 如何添加小写索引雪球分析仪ElasticSearch
- 12. Lucene的使用雪球和拼写检查带回奇怪值
- 13. 如何在Java中编写Lucene雪球代码
- 14. 当使用Grails可搜索插件时,正确的雪球分析器配置
- 15. 分类标准级解析
- 16. 创建一个Lucene分析器
- 17. 为什么Lucene QueryParser需要分析器
- 18. lucene自定义分析器中的Nullpointerexception
- 19. 使用FieldBridges实现Lucene分析器
- 20. 带lucene的西班牙语分析器
- 21. 索引字段的Lucene 4.2分析器
- 22. Lucene 6.1自定义Tokenizer和分析器
- 23. 如何测试Lucene分析器?
- 24. 使用Lucene分析器链接Solr HTMLStripCharFilter
- 25. Lucene查询和分析器组合
- 26. Lucene分析器使用特殊字符和标点符号?
- 27. 如何使用Lucene分析器来标记字符串?
- 28. Lucene的查询分析器无法分析领域如预期
- 29. 如何不分析lucene查询分析器中的子句?
- 30. Lucene和Lucene中的俄语语言分析器.Net
如果您使用雪球分析仪,您应该得到单数/复数的结果,因为雪球会将它们归一化为相同的形式。你确定你使用相同的分析器来创建索引并查询它吗? – Skarab 2010-10-10 11:03:44