Lucene邻近搜索与多个单词



我试图建立一个查询来搜索具有名称变体的名称的Lucene索引。该索引是用Lucene构建的。. NET version 2.9.2

用户输入"Margaret White"。没有名称变体选项,我的查询变成"Margaret White"~1,它工作了。

现在,我可以根据名和姓查找姓名变体,以生成扩展列表。如。在这种情况下(我只包括一些作为例子,因为列表有时可以是100或更多),我们可以使用

玛格丽特/玛格丽特·怀特/怀特

查询"玛格丽特·怀特"~1 OR"玛格丽特·怀特"~1 OR"玛格丽特·怀特"~1 OR"玛格丽特·怀特"~1

给了我正确的结果,但是给定可能的100 x 100变体组合,查询字符串至少可以说是麻烦的。

我已经尝试了各种方法来实现更紧凑的查询,但似乎没有工作。

谁能给我任何指示或替代方法。我已经控制了索引创建过程,想知道是否有什么我可以在那个阶段做?

感谢您的关注罗杰

在索引过程中而不是在查询时执行同义词筛选。映射"white","whyte",…对某一个词;说"白色"。"玛格丽特"也是一样。"

那么您的查询将只是"margaret white"~1

我遇到了一个类似的问题,并通过编写自己的查询解析器和手动实例化查询原语来解决它。编写自己的查询解析器不一定容易,但它给了您很大的灵活性。在我的新查询语言中,我使用within/N来指定邻近查询。有了它,可以执行以下复杂查询:

margaret within/3 white
margaret within/3 (white or whyte)

或者更复杂的查询

("first name" within/3 margaret) within/10 ("last name" within/3 (white or whyte))

相关内容

  • 没有找到相关文章

最新更新