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);
}
上面的方法只是给我结果,但是为此,我必须搜索整个单词,但是如果我搜索部分单词,它将不起作用。
答案 0 :(得分:1)
默认情况下,MultiFieldQueryParser
(和此类继承的QueryParser
)将查找要搜索的整个单词,但是它也可以生成通配符查询。可以使用elep*
,elep?ant
(即?表示单个字母)或ele*nt
来匹配单词“大象”。您还可以使用模糊查询,例如elechant~
。
您可以在此处阅读整个语法规范:http://lucene.apache.org/core/7_5_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html(在类列表下方)。