[英]How do I search partial words in Lucene when using MultiFieldQueryParser?
public SearchResult search(String queryStr, SortBy sortBy, int maxCount)
throws ParseException, IOException {
String[] fields = {Indexer.TITLE_FIELD_NAME, Indexer.REVIEW_FIELD_NAME, "name"};
QueryParser parser = new MultiFieldQueryParser(fields, analyzer);
Query query = parser.parse(queryStr);
Sort sort = null;
if (sortBy != null) {
sort = sortBy.sort;
}
return searchAfter(null, query, sort, maxCount);
}
上面的方法只是给我结果,但是为此我必须搜索整个单词,但是如果我搜索部分单词,它将不起作用。
默认情况下, MultiFieldQueryParser
(和QueryParser
,此类继承自该类)将查找要搜索的整个单词,但是它也可以生成通配符查询。 可以通过使用elep*
, elep?ant
(即,算术一个字母)或ele*nt
来匹配单词“ elephant”。 您还可以使用模糊查询,例如elechant~
。
您可以在此处阅读整个语法规范: http : //lucene.apache.org/core/7_5_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html (在类列表下方)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.