如何在Lucene Text Field上进行精确匹配和部分匹配?

时间:2016-07-24 15:36:23

标签: java elasticsearch solr lucene

我要求在字段上进行精确匹配然后部分匹配。 目前对于相同的数据,我创建了两个字段,一个是TextField(用于部分匹配),另一个是StringField(用于完全匹配)。我有很多这样的字段,我需要应用类似的逻辑。

你能否建议一个更好的方法?

谢谢, PARTH

2 个答案:

答案 0 :(得分:3)

最短的解决方案是使用逻辑布尔查询(FieldName:test) or (FieldName:test*) or (FieldName:test~)而不是创建多个字段。

在这个例子中,我们试图匹配三种不同的情况:

  1. 完全匹配
  2. 部分匹配
  3. 模糊搜索

答案 1 :(得分:1)

每当需要完全匹配时,只需将查询括在双引号(“)中或使用phrase query最终设置默认slop( 设置查询短语中单词之间允许的其他单词数。对于部分匹配,正常查询将执行。