Поддерживают ли Lucene и Sphinx сопоставление префиксов? - PullRequest
2 голосов
/ 03 апреля 2011

Если нет, то как вам заставить их работать с ними, и что лучше?

например. при поиске «mi» я хотел бы, чтобы результаты с «microsoft» потенциально отображались в результате, даже если не было «ключевого слова», такого как «mi».

1 Ответ

3 голосов
/ 03 апреля 2011

Да и Да.

Lucene имеет PrefixQuery :

BooleanQuery query = new BooleanQuery();
for (String token : tokenize(queryString)) {
  query.add(new PrefixQuery(new Term(LABEL_FIELD_NAME, token)), Occur.MUST);
}
return query;

Вы также можете использовать синтаксический анализатор запросов Lucene и определить поиск префикса с помощью , используя подстановочный знак exam*. Синтаксис синтаксического анализатора запросов работает, если вы хотите развернуть отдельный сервер поиска Lucene, Solr, , который вызывается с использованием HTTP API

В Сфинксе он выглядит следующим образом:

  1. Установить минимальную длину префикса на значение больше 0
  2. Включить подстановочный синтаксис
  3. Создать строку запроса с помощью карты воли exam*
...