Лидирующий подстановочный знак выдает ошибку в Lucene. - PullRequest
4 голосов
/ 22 января 2009

Если поисковый запрос содержит начальный символ подстановки (* или ?), функция QueryParser Parse выдает ошибку.

Dim q As String = "*abc"
Dim qp As New QueryParser("text", New StandardAnalyzer())
Dim query As Query = qp.Parse(q)

Есть ли способ решить эту проблему в Lucene.NET v2.0.0.4?

Ответы [ 3 ]

5 голосов
/ 22 января 2009

Установить QueryParser.SetAllowLeadingWildcard Method в true. На странице API говорится, что «это может привести к очень медленным запросам к большим индексам».

1 голос
/ 22 января 2009

Возможно, вам придется использовать WildcardQuery , но

... Для предотвращения крайне медленно WildcardQueries, термин Wildcard не должен начинаться с одного из подстановочные ...

0 голосов
/ 12 декабря 2016

Вы можете избежать подстановочных запросов, используя NGramFilter для вашего анализатора индекса. Чем вы должны использовать search_analyzer без NGramFilter. Таким образом, вы можете искать похожие на like "%text%" даже без подстановочных знаков. Вы просто вводите 'abc' и ваш индекс будет искать все записи, содержащие 'abc' очень быстро.

...