0

我看过这个问题 - Indexing multilingual words in lucene,它证实了我的一些怀疑。

我有一个实体,其中包含我希望索引的多个字段。这些字段之一可以是多种语言中的一种,我需要为每种语言使用不同的分析器。

我最好将其实现为同一索引中的不同字段还是每种语言的不同索引?

我猜想权衡是在运行多个索引的开销和弄乱单个索引的麻烦之间。

任何建议表示赞赏。

4

1 回答 1

2

您没有提到的另一个想法:您可以使每种语言成为非存储、非索引字段。然后,您可以将所有(分析的)数据复制到单个存储+索引字段,它的行为就像您正在搜索单个字段一样。(这类似于 Solr 的“复制字段”——我不确定在休眠状态下做起来有多难。)

如果您将它们保存在单独的索引中,您应该注意您将无法轻松地跨语言搜索(或者,可以说,根本无法搜索)。所以如果你想允许像“english:foo dutch:foo”这样的查询,你需要它们在同一个索引中。

从性能的角度来看,这取决于共享的数据量。如果文档是不相交的(即没有文档包含两种语言),那么将它放在一个索引与两个索引之间可能不会有太大的区别。它们共享的数据越多,Lucene 将复制的内存就越多,因此拥有一个索引会变得更好。我的猜测是,如果你有很多存储数据,这只是一个问题,但是 YMMV。

于 2011-03-21T15:06:00.937 回答