【问题标题】:Searching and sorting by language按语言搜索和排序
【发布时间】:2010-11-20 07:35:12
【问题描述】:

我正在测试 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”搜索我想先得到第二个结果。

感谢任何信息或建议。

非常感谢!

【问题讨论】:

    标签: indexing lucene lucene.net multilingual


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-01
      • 1970-01-01
      • 2011-08-20
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多