0

我正在尝试在 Lucene 中索引一个可能具有不同语言的 RDF 文字的字段。到目前为止,我看到的大多数方法是:

  • 使用单个索引,其中每个文档针对其使用的每种语言都有一个字段,或者

  • 使用 M 个索引,M 是语料库中语言的数量。

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

4

2 回答 2

0

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

于 2011-03-11T04:18:02.403 回答
0

这取决于。

  1. 您是否要允许类似:“在所有英文文本中搜索 'foo'”?如果是这样,那么您将需要每种语言一个字段。
  2. 或者您是否想要“在所有文本中搜索 'foo' 并向用户展示找到匹配项的语言?” 如果这是您想要的,那么有效负载或单独的字段都可以使用。
  3. 另一种方法是在一个字段中索引所有文本,然后让另一个字段说明文档的语言。(假设每个文档都使用一种语言。)那么您的搜索将类似于+text:foo +language:english.

在效率方面:您可能希望避免使用有效负载,因为您必须为每个术语重复语言名称,并且您不能基于有效负载进行搜索(至少不容易)。

于 2011-03-10T19:59:50.150 回答