【问题标题】:Difference in scoring between multivalued field and tokenized field多值字段和标记化字段之间的评分差异
【发布时间】:2012-02-03 21:08:41
【问题描述】:

例如,我每个文档有几个标签。我可以

  • 将它们索引为单个文本字符串,使用 WhiteSpaceTokenizer 按空格分割。 (例如“tag1 tag2 tag3”)
  • 使用 KeywordAnalyzer ( 例如 doc.addField("tags1", "tag1"); doc.addField("tags", "tag2"); doc.addField("tags", "tag23) )

这两种方法都可以。问题是这些类型的索引的评分会有多大不同? (即字段归一化因子、tf/idf 计数、字段长度计算、斜率因子等)

【问题讨论】:

    标签: solr indexing lucene


    【解决方案1】:

    无论如何,Lucene 都会在后台连接多值文件的所有值,因此它与您的第一个案例没有太大不同,如果有的话。如果您只使用标签作为过滤器(给我所有用 tag2 标记的文档),那么您肯定不会看到任何区别。

    【讨论】:

    • 这是否意味着我可以使用第二种方法搜索短语?
    • 为什么不呢? (这很烦人,最少 15 个字符的评论长度......)
    • 因为这是意外行为,如果我索引“a”、“b” - 它是不相关的两个字符串。我不想通过“a b”查询找到它们
    【解决方案2】:

    我认为多值会更准确。

    想象一个标记化的字符串“spider web developer”

    对比

    具有“spider”和“web developer”值的多值字段

    搜索“Web 开发人员”会匹配这两个字段,但匹配与多值字段的比较可以被视为更准确。

    【讨论】:

    • 蜘蛛网也可以匹配,尽管他可能不想要它,并且可以通过位置增量来阻止它。
    • 我知道。但我的标签会注意包含空格,或者我会选择差异标记器。仅关于 lucene 评分模型的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2019-10-19
    • 2021-04-27
    • 1970-01-01
    • 2013-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多