@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?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
@My1Name Автор вопроса
FuzzyQuery ищет слово + offset символов в слове (по параметру maxEdits). Он не ищет словосочетания. Нужно унифицировать набор методов Query. FuzzyQuery - это один из множества фильтров (модификаторов) запроса. Фильтры нужно комбинировать для получения желаемого результата. Вот некоторые из них: TermQuery, PhraseQuery, BooleanQuery, WildcardQuery, PrefixQuery...

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

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

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 мая 2024, в 13:14
5000 руб./за проект
19 мая 2024, в 11:50
2000 руб./в час
19 мая 2024, в 11:50
7000 руб./за проект