【问题标题】:In Solr, why use different analyzers for index vs query?在 Solr 中,为什么对索引和查询使用不同的分析器?
【发布时间】:2012-04-17 04:31:48
【问题描述】:

您为什么要使用不同的分析器进行索引和查询是否有充分的理由?在示例 schema.xml 文件中,对于 text_en_splitting,例如,索引分析器不进行同义词扩展,但查询进行。这只是为了保持索引尽可能小吗?同样,对于 WordDelimiterFilterFactory,索引分析器有 catenateWords="1" 和 catenateNumbers="1",而查询分析器将它们设置为 0。这只是为了保持查询小(快)吗?这些优化真的值得两个“几乎相同”的分析器的维护噩梦吗?

谢谢!

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

    您不需要在索引时和查询时进行同义词扩展,只需要这两者之一。 想想看,如果你只在索引时这样做,所有列出的单词都会被它的所有同义词补充。
    然后,当您使用这些词中的任何一个查询索引时,您将匹配所有经过扩展的文档。

    没有必要在两端展开。 建议您在索引时执行此操作,因为这样可以加快查询时间。

    恕我直言,一般规则应该是尽可能地进行芯片化(包括在查询时扩展同义词的几毫秒),以使用户体验更好。而且这些筹码会大量堆积。

    您可以就我们为什么鼓励文档中的数据冗余提出同样的问题。

    【讨论】:

    • 实际上,当您在同义词文件中也有明确的映射时,它可能会更复杂,例如“i-pod,i pod => ipod”。然后你需要在查询和索引时都进行扩展。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-21
    • 1970-01-01
    • 2011-06-08
    • 2014-05-11
    相关资源
    最近更新 更多