我正在测试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”搜索我想先得到第二个结果。
感谢任何信息或建议。
非常感谢!
答案 0 :(得分:1)
您需要做出设计决策,其中包含以下选项:
如果使用多索引方法,则可以更轻松地将搜索限制为特定语言或一组语言 - 只需搜索这些语言的索引,而不是使用其他语言。此外,按语言排序变得更容易。因此,如果你没有 一个“AND”搜索需要来自不同语言的关键词出现在同一个文档中,我建议使用M-index方法。
根据您的示例,我假设未特别标记的文档部分是英文的。如果是这样,您可以将文档文本作为单独的字段添加到英语索引中;其他索引只需要存储一个文档ID,这将使它们更轻。