Fórum
использование FuzzyQuery для нечеткого поиска
Pavel Shuvaev, modificado 11 Anos atrás.
использование FuzzyQuery для нечеткого поиска
New Member Postagens: 13 Data de Entrada: 07/06/12 Postagens Recentes
Привет всем.
Я пытаюсь использовать FuzzyQuery Lucen'a для поиска в базе данных. Мой код:
Однако, при деплое выдаются ошибки типа:
Очевидно, что из обычного плагин-портлета получить доступ к перечисленным классам я не смогу. Что посоветуете в качестве альтернативы для нечеткого поиска?
Я пытаюсь использовать FuzzyQuery Lucen'a для поиска в базе данных. Мой код:
public void postProcessContextQuery(
BooleanQuery contextQuery, SearchContext searchContext)
throws Exception {
String field = (String)searchContext.getAttribute("field");
if ( field != null) {
FuzzyQuery fuzzyQuery = new FuzzyQuery(new Term("field", field));
contextQuery.add(new LuceneQueryImpl( fuzzyQuery ), BooleanClauseOccur.MUST);
}
}
Однако, при деплое выдаются ошибки типа:
The import com.liferay.portal.repository.search cannot be resolved
The import com.liferay.portal.search cannot be resolved
.....
FuzzyQuery cannot be resolved to a type
LuceneQueryImpl cannot be resolved to a type
Очевидно, что из обычного плагин-портлета получить доступ к перечисленным классам я не смогу. Что посоветуете в качестве альтернативы для нечеткого поиска?
Alexey Kakunin, modificado 11 Anos atrás.
RE: использование FuzzyQuery для нечеткого поиска
Liferay Master Postagens: 621 Data de Entrada: 07/07/08 Postagens Recentes
если FuzzyQuery есть в Lucene - то наверное лучше и не изобретать велосипед. насколько я понимаю, что для FuzzyQuery просто нет лайфреевской обертки для использования через из унифицированное search api - которое как раз и доступно для плагинов.
То есть я вижу путь через написания такой обертки и ее добавления в ядро Liferay через ext-plugin
ну и дальше используете в портлете новый ореточный класс.
Надо будет правда сразу проверить как это работает с SOLR
==
Alexey Kakunin
EmDev Limited
То есть я вижу путь через написания такой обертки и ее добавления в ядро Liferay через ext-plugin
ну и дальше используете в портлете новый ореточный класс.
Надо будет правда сразу проверить как это работает с SOLR
==
Alexey Kakunin
EmDev Limited
Pavel Shuvaev, modificado 11 Anos atrás.
RE: использование FuzzyQuery для нечеткого поиска
New Member Postagens: 13 Data de Entrada: 07/06/12 Postagens Recentes
Alexey Kakunin, спасибо за быстрый ответ.
Обертку я в ext-плагине написал - TranslateQuery , но она не видна из обычного портлета. Собственно, классы люцена также не видны:
[javac] import org.apache.lucene.index.Term;
[javac] ^^^^^^^^^^^^^^^^^
[javac] The import org.apache.lucene cannot be resolved
[javac] import org.apache.lucene.search.FuzzyQuery;
[javac] ^^^^^^^^^^^^^^^^^
[javac] The import org.apache.lucene cannot be resolved
[javac] TranslateQuery translateQuery = new TranslateQuery( new FuzzyQuery( new Term("regionName", regionName) ));
[javac] ^^^^^^^^^^^^^^
[javac] TranslateQuery cannot be resolved to a type
Что я не так делаю?
Обертку я в ext-плагине написал - TranslateQuery , но она не видна из обычного портлета. Собственно, классы люцена также не видны:
[javac] import org.apache.lucene.index.Term;
[javac] ^^^^^^^^^^^^^^^^^
[javac] The import org.apache.lucene cannot be resolved
[javac] import org.apache.lucene.search.FuzzyQuery;
[javac] ^^^^^^^^^^^^^^^^^
[javac] The import org.apache.lucene cannot be resolved
[javac] TranslateQuery translateQuery = new TranslateQuery( new FuzzyQuery( new Term("regionName", regionName) ));
[javac] ^^^^^^^^^^^^^^
[javac] TranslateQuery cannot be resolved to a type
Что я не так делаю?
Pavel Shuvaev, modificado 11 Anos atrás.
RE: использование FuzzyQuery для нечеткого поиска
New Member Postagens: 13 Data de Entrada: 07/06/12 Postagens Recentes
решил проблему обходным путем: воспользовался query, позволяющей задавать произвольные запросы к люцену - StringQueryFactoryUtil.create( stringQuery). Где stringQuery - строка типа "(+name:запрос~0.66)"