使用MultiFieldQueryParser时如何在Lucene中搜索部分单词?

时间:2018-10-03 13:43:14

标签: java lucene

 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);
}

上面的方法只是给我结果,但是为此,我必须搜索整个单词,但是如果我搜索部分单词,它将不起作用。

1 个答案:

答案 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(在类列表下方)。