[英]Fuzzy search on a phrase using Hibernate Search
我正在使用Hibernate Search在我的Web应用程序上搜索电视节目的标题。
为了对关键字执行模糊搜索,我可以在keyword()
fuzzy()
上使用fuzzy()
方法,但是我需要考虑整个标题,因此我使用了phrase()
而不是keyword()
。 没有为phrase()
定义方法fuzzy()
,所以我想知道是否有一种简单的方法可以使用Hibernate Search对短语进行模糊搜索。
如果您只需要带PhraseQuery
(即,抛出了多余的单词),则可以在短语查询中设置PhraseQuery
,例如:
queryBuilder.phrase()
.setSlop(2)
.onField("myField")
.sentance("this sentence missing something")
.createQuery();
但是,我不知道Hibernate API中支持在短语中嵌入模糊查询的任何内容,但是在Lucene中,您可以使用SpanQuery
API进行构建。 尤其需要SpanMultiTermQueryWrapper
和SpanNearQuery
。 就像是:
FuzzyQuery query1 = new FuzzyQuery(new Term("field", "fuzy"));
FuzzyQuery query2 = new FuzzyQuery(new Term("field", "phrse"));
Query wrappedQuery1 = new SpanMultiTermQueryWrapper<FuzzyQuery>(query1);
Query wrappedQuery2 = new SpanMultiTermQueryWrapper<FuzzyQuery>(query2);
SpanQuery[] clauses = {wrappedQuery1, wrappedQuery2};
SpanNearQuery(clauses, 0, true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.