【问题标题】:Lucene Standard Analyzer vs SnowballLucene 标准分析器与 Snowball
【发布时间】:2010-10-06 17:45:10
【问题描述】:

刚刚开始使用 Lucene.Net。我使用标准分析器索引了 100,000 行,运行了一些测试查询,并注意到如果原始术语是单数,复数查询不会返回结果。我了解雪球分析器添加了词干支持,这听起来不错。但是,我想知道使用雪球超过标准的锣是否有任何缺点?跟着它走,我会失去什么吗?是否还有其他分析仪可供考虑?

【问题讨论】:

  • 如果你使用雪球分析器,你应该得到单数/复数的结果,因为雪球会将它们标准化为相同的形式。您确定使用相同的分析器来创建索引和查询它吗?

标签: full-text-search lucene lucene.net nlp snowball


【解决方案1】:

是的,通过使用诸如 Snowball 之类的词干分析器,您会丢失有关文本原始形式的信息。有时这很有用,有时没有。

例如,Snowball 会将“组织”分解为“器官”,因此搜索“组织”将返回带有“器官”的结果,没有任何得分惩罚。

这是否适合您取决于您​​的内容,以及您支持的查询类型(例如,搜索是否非常基本,或者用户是否非常复杂,并且使用您的搜索来准确过滤结果)。您可能还想研究不那么激进的词干分析器,例如 KStem

【讨论】:

  • 我刚刚发现你也可以像“kangaroos~”这样进行模糊搜索,它也会返回单词的单数版本,尽管处理查询似乎需要更长的时间。
  • @alchemical:我真的不建议这样做。 ~ 是一个非常慢的运算符,如果您的用户执行诸如搜索短语之类的操作,那么您有点搞砸了。如果你把“袋鼠”存储为“袋鼠”,为什么会这么糟糕?
  • 好的,很高兴知道——要使用 KStem,你需要 Solr 吗?您是否需要使用 Lucene 源代码才能将其集成到其中?
  • 知道这有点老了,但是您知道普通分析器是否确实进行了词干提取,还是只是停用词?无法弄清楚:(
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-07
      • 2012-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      相关资源
      最近更新 更多