我看过这个问题 - Indexing multilingual words in lucene,这证实了我的一些怀疑。
我有一个实体,我想索引多个字段。其中一个字段可以是多种语言之一,我需要为每种语言使用不同的分析器。
我最好将其作为同一索引中的不同字段或每种语言的不同索引来实现吗?
我猜测,权衡是在运行多个索引的开销和混乱单个索引的尴尬之间。
任何建议表示赞赏。
答案 0 :(得分:2)
您没有提及的另一个想法是:您可以将每种语言设为非存储的非索引字段。然后,您可以将所有(已分析的)数据复制到单个存储的+索引字段,并且它的行为就像您正在搜索单个字段一样。 (这类似于Solr的“复制字段” - 我不确定它在休眠方面有多难。)
如果将它们保存在单独的索引中,您应该注意到,您将无法轻松地跨语言搜索(或者,可以说,根本不可能)。所以如果你想允许像“english:foo dutch:foo”这样的查询,你需要在同一个索引中使用它们。
从性能角度来看,这取决于共享的数据量。如果文档是不相交的(即没有文档中有两种语言),那么将它放在一个索引与两个索引之间可能没有那么大的区别。他们共享的数据越多,Lucene将会复制的内存越多,因此拥有一个索引会更好。我的猜测是,如果你有大量的存储数据,这只是一个问题,但YMMV。