【发布时间】:2011-09-30 13:07:07
【问题描述】:
我正在尝试构建一个查询来搜索名称变体的 Lucene 索引。 该索引是使用 Lucene.NET 2.9.2 版构建的
用户输入例如“Margaret White”。 如果没有名称变体选项,我的查询将变为“Margaret White”~1 并且可以正常工作。
现在,我可以根据名字和姓氏查找名称变体以生成扩展列表。 例如。在这种情况下(我只包括一些作为示例,因为列表有时可能是 100 或更多)我们可以有
玛格丽特/玛格丽特怀特/怀特
查询“玛格丽特·怀特”~1 OR “玛格丽特·怀特”~1 OR “玛格丽特·怀特”~1 OR “玛格丽特·怀特”~1
给我正确的结果,但给定一个可能的 100 x 100 变体组合,查询字符串至少可以说很麻烦。
我尝试了各种方法来实现更紧凑的查询,但似乎没有任何效果。
谁能给我任何指示或替代方法。我可以控制索引创建过程,想知道在那个阶段我可以做些什么吗?
感谢收看 罗杰
【问题讨论】:
-
作为后续,我现在实现了一个基于link 的自定义分析器,它将额外的名称变体标记插入到标记流中。所以现在我的搜索将找到所有变体。我现在正在寻找仅在文档中存在同义词时添加同义词以减少排列的方法。我可以从自定义过滤器内部访问原始文本的唯一方法是访问传递给分析器的 TextReader - 读取它以获取文本将其带到文本的末尾,而无法“倒带”然后读取令牌.