是否有充分的理由说明为什么要使用不同的分析器进行索引与查询?例如,在示例schema.xml文件中,对于text_en_splitting,索引分析器不会执行同义词扩展,但会执行查询。这只是为了保持索引尽可能小吗?类似地,对于WordDelimiterFilterFactory,索引分析器具有catenateWords =“1”和catenateNumbers =“1”,而查询分析器将它们设置为0.这是为了保持查询小(快)?这些优化是否真的值得两个“几乎相同”的分析仪的维护噩梦?
谢谢!
答案 0 :(得分:8)
在索引时和查询时,您不需要同义词扩展,只需要其中一个。
想一想,如果你只是在编制索引时这样做,所有列出的单词都将由其所有同义词补充。
然后,当您使用任何这些单词查询索引时,您将匹配所有经历扩展的文档。
没有必要在两端扩展。 并且建议您在索引时执行此操作,因为这样可以加快查询时间。
恕我直言,一般规则应该是尽可能地筹码(包括在查询时扩展同义词几毫秒),以使用户体验更好。而这些芯片可能会大量堆积。您可以提出相同的问题,说明为什么我们鼓励文档中的数据冗余。