2011-03-10 63 views
0

我想在Lucene中索引一个可以在不同语言中使用RDF文本的字段。 大多数到目前为止,我所看到的方法是:在lucene中索引多语言词

  • 使用一个单一的指标,其中每个文件都有每它使用的每种语言的一个字段,或

  • M用指标,M是数语料库中的语言。

Lucene的2.9+有一个称为有效载荷功能,允许将属性附加到项。有人使用这种机制来存储语言(或其他属性,如数据类型)信息吗?与其他两种方法相比,性能如何?源代码上的任何指针显示如何完成将有所帮助。谢谢。

回答

0

这取决于。

  1. 你想要允许类似这样的内容吗?“搜索所有英文文本的'foo'”?如果是这样,那么你将需要每种语言一个字段。
  2. 还是你想“搜索'foo'的所有文本,并向用户提供找到匹配的语言?”如果这是你想要的,那么有效载荷或单独的字段将起作用。
  3. 另一种方法是将所有文本索引到一个字段中,然后有另一个字段说明文档的语言。 (假定每个文档都是单一语言的。)然后你的搜索就像+text:foo +language:english

就效率而言:您可能希望避免有效载荷,因为您必须重复每个术语的语言名称,并且无法基于有效载荷进行搜索(至少不容易)。

+0

我想要案例2.我需要能够向用户展示其文字的语言。如果一个名为prefLabel的字段,lucene是否可以处理不同语言中相似的标签的索引,例如“email”^ en“email”^ fr?倒排索引是否使用有效载荷来区分条目? – fellahst 2011-03-10 20:13:27

+0

@fellahst:你可以将有效载荷想象为“无论你想要附加到该术语的随机废话。”搜索者忽略它。尽管如此,您仍然可以手动将其拉出。 – Xodarap 2011-03-11 04:15:56

+0

我注意到有一个PayloadTermQuery类允许查询Payload。我不确定当你说搜索者忽略有效载荷时你是否声称是正确的。 – fellahst 2011-03-11 17:04:45

0

所以基本上lucene是一种排名算法,它只是查看字符串并将它们与其他字符串进行比较。它们可以用不同的字符编码进行编码,但它们的相似性是相同的。只要确保你使用受支持的语法分析器加载SnowBallAnalyzer,你应该得到结果。就像说西班牙语或中文