2014-07-15 149 views
2

我们正在使用Lucene.net在我们的应用程序搜索的Lucene索引策略,我们以诚信的方式做到这一点,现在我们需要支持多语言,所以我想问一下,我们应该为索引使用什么样的策略,在不同的索引文件夹中使用不同的分析器索引不同的语言,使用不同的分析器索引文件夹,具有文档,英语语言和其他语言字段的索引文件夹相同(我们的结果是每个语言都有太多的字段bt重复字段)还是有其他选择? 普拉Thokal与多语言支持

回答

3

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

由于Lucene中的术语是字段:术语,对于具有常见单词的语言,术语统计将成为一个问题,特别是如果在一种语言中该术语是一个经常使用的词,而在其他语言中则是不常见的词。最糟糕的情况是一种语言中的停用词和其他语言中的重要术语。如果是这样的话,这是一个不行的策略。但是,对于您的语言设置,可能不会对统计术语产生影响,并且不同语言的词汇表是相互排斥的。在这种情况下,您可能会期望TFIDFSimilarity正常工作。如果你使用其他相似类,如果TFIDF工作,他们应该大多工作。

对于其他策略:

它肯定取决于 一)无语言支持(比如M) b)否这就需要使用多种语言领域(比如说N)

万一。 m和n少,那么你可以去multifields方法:

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

除非你打到m * n个超过1000+领域,这是一个安全的策略。当没有任何字段很大时,Lucene的性能会下降。

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

+0

我的单文档中有近50场,而我计划支持7-8语言会是怎样进行索引的最佳策略和搜索以维持性能。 –