按语言搜索和排序

时间:2009-08-17 16:36:16

标签: indexing lucene lucene.net multilingual

我正在测试Lucene.NET的搜索要求,我有几个问题。

我们有XML格式的文档。每个文档都包含多语言文本。语言和语言本身的数量因文档而异。见下面的例子:

<document>This is a sample document, which is describing a <word lang="de">tisch</word>, a <word lang="en">table</word> and a <word lang="en">desk</word>.</document>

文档的关键字标有特殊元素和语言属性。

当我创建lucene索引时,我从XML中提取文本内容以及语言和关键字对(我不确定是否必须),如下所示:

This is a sample document, which is describing a tisch, a table and a desk.

de - tisch
en - table
en - desk

我不知道如何创建一个我可以搜索的索引: - 所有包含德语单词tisch的文档(而不是包含其他语言单词tisch的文档)。

我还想在运行时指定排序: 我想按用户指定的语言顺序排序(取决于用户界面)。例如,如果我们有两个文件:

<document>This is a sample document, which is describing a <word lang="de">tisch</word>.</document>
<document>This is a another sample document, which is describing a <word lang="en">table</word>.</document>

并且英文界面上的用户按“tisch OR table”搜索我想先得到第二个结果。

感谢任何信息或建议。

非常感谢!

1 个答案:

答案 0 :(得分:1)

您需要做出设计决策,其中包含以下选项:

  • 使用单个索引,其中每个文档按其使用的每种语言都有一个字段,或
  • 使用M索引,M是语料库中的语言数。

如果使用多索引方法,则可以更轻松地将搜索限制为特定语言或一组语言 - 只需搜索这些语言的索引,而不是使用其他语言。此外,按语言排序变得更容易。因此,如果你没有 一个“AND”搜索需要来自不同语言的关键词出现在同一个文档中,我建议使用M-index方法。

根据您的示例,我假设未特别标记的文档部分是英文的。如果是这样,您可以将文档文本作为单独的字段添加到英语索引中;其他索引只需要存储一个文档ID,这将使它们更轻。