具有多语言支持的Lucene索引策略

时间:2014-07-15 11:28:59

标签: lucene.net

我们正在使用Lucene.net在我们的应用程序中进行搜索,我们以良好的方式进行搜索,现在我们需要支持多种语言,所以我想问一下我们应该使用什么策略进行索引,索引不同语言中的不同语言具有不同分析器的文件夹,具有文档的相同索引文件夹,英语语言和其他语言字段(我们最终有多个字段,每种语言重复字段)或者还有其他替代方案吗?                                                                                 Pravin Thokal

1 个答案:

答案 0 :(得分:3)

理想的策略是拥有一个额外的语言字段,其他现有字段可以采用多种语言的内容。语言字段的值动态地为多语言字段选择不同的语言分析器。 但实质上,一个领域将有许多语言的内容影响术语统计。

由于Lucene中的术语是field:term,对于具有共同单词的语言,术语统计将是一个问题,特别是如果在一种语言中该术语是经常使用的单词而在另一种语言中是一个不常见的单词。最糟糕的情况是一种语言的停止词和其他语言的重要术语。如果是这种情况,这是一个不可行的策略。但是,对于您的语言集,可能不会对术语统计数据产生影响,并且不同语言的词汇表是互斥的。在这种情况下,您可以期望TFIDFSimilarity可以工作。如果你正在使用其他相似性类,如果TFIDF有效,它们应该最好运行。

其他策略:

这绝对取决于 a)没有支持的语言(比如m) b)不需要多语言的领域(比如说n)

如果m和n都较小,那么你可以选择多场方法:

(en -english, jp - Japanese, fr - French)
field1_en, field1_jp , field1_fr,
field2_en, field2_jp , field2_fr.

除非你的m * n超过1000多个字段,否则这是一个安全的策略。当没有巨大的领域时,Lucene的表现会下降。

如果语言不是很少,那么不同的索引文件夹(不同的模式)可以工作 - 但请注意,如果您需要返回来自不同语言的结果,那么很多搜索引擎都会关注它。弹性搜索虽然做得很好。