Как искать отдельные слова в Lucene при использовании MultiFieldQueryParser? - PullRequest
0 голосов
/ 03 октября 2018
 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 голосов
/ 05 октября 2018

По умолчанию MultiFieldQueryParserQueryParser, от которого этот класс наследует) будет искать все слова, которые вы ищете, но также может генерировать подстановочные запросы.Слово «слон» может быть сопоставлено с помощью elep*, elep?ant (то есть? Соответствует одной букве) или ele*nt.Вы также можете использовать нечеткие запросы, например elechant~.

. Вы можете прочитать всю спецификацию синтаксиса здесь: http://lucene.apache.org/core/7_5_0/queryparser/org/apache/lucene/queryparser/classic/package-summary.html (ниже списка классов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...