Запрос подстроки с помощью поискового модуля в Play - PullRequest
1 голос
/ 03 января 2012

Я пытался использовать модуль поиска, предоставленный в платформе Play, и столкнулся с ограничением «Вы не можете использовать символ * или? В качестве первого символа поиска» на основе ссылки http://lucene.apache.org/core/old_versioned_docs/versions/3_0_2/queryparsersyntax.html

Есть ли альтернатива запросу для ключевого слова подстроки "ice" в объектах String, таких как "nice, rice, .."

Thx

1 Ответ

0 голосов
/ 24 августа 2012

Вы можете сделать это, используя QueryParser , установив флаг setAllowLeadingWildcard .

QueryParser queryParser = new QueryParser(...);
queryParser.setAllowLeadingWildcard(true);
Query q = queryParser.parse("*ice");

Но вы должны знать о влиянии на производительность.Из документов :

Подстановочные знаки (например, * ook) не поддерживаются QueryParser по умолчанию.Начиная с Lucene 2.1, их можно включить, вызвав QueryParser.setAllowLeadingWildcard (true).Обратите внимание, что это может быть дорогостоящей операцией: для этого необходимо просканировать список токенов в индексе полностью, чтобы найти те, которые соответствуют шаблону.

...