4

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

谢谢!

4

1 回答 1

8

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

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

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

你可以问同样的问题,为什么我们鼓励文档中的数据冗余。

于 2012-04-17T07:18:46.630 回答