@My1Name

Почему поиск FuzzyQuery (Apache Lucene) ничего не возвращает?

Почему FuzzyQuery ничего не возвращает?
public static void fuzzySearch(final String querystr, final String searchField,
			final int limit) throws IOException, ParseException {
		IndexReader reader = DirectoryReader.open(dir); 
		IndexSearcher indexSearcher = new IndexSearcher(reader); 
		Term term = new Term(searchField, querystr);
		int maxEdits = 2;
		Query query = new FuzzyQuery(term, maxEdits);
		TopDocs search = indexSearcher.search(query, limit);
		ScoreDoc[] hits = search.scoreDocs;
		showHits(hits);
	}

При вызове метода fuzzySearch() результаты поиска выводятся только в том случае, если query длиной <= maxEdits То есть выводится первая запись Document, которая рандомная(?) в таком поиске... Как правильно сделать fuzzySearch?
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@My1Name Автор вопроса
FuzzyQuery ищет слово + offset символов в слове (по параметру maxEdits). Он не ищет словосочетания. Нужно унифицировать набор методов Query. FuzzyQuery - это один из множества фильтров (модификаторов) запроса. Фильтры нужно комбинировать для получения желаемого результата. Вот некоторые из них: TermQuery, PhraseQuery, BooleanQuery, WildcardQuery, PrefixQuery...

Основной принцип работы Apache Lucene основан на подсчитывании очков (Scoring). Так создаётся релевантный список результатов поиска по индексам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 22:26
3500 руб./за проект
22 нояб. 2024, в 21:47
3000 руб./за проект
22 нояб. 2024, в 21:44
50000 руб./за проект