Я использую автозаполнение jQuery в jsp и получаю результаты поиска из сервлета, где в индексе Lucene выполняется поиск по заданному термину, который должен быть автозаполнен.Вот код автозаполнения в jsp:
$(document).ready(function() {
$("#QRY_ItemQuickSearch_enc").autocomplete("<%=autoSuggestAction%>",
{
onItemSelect:selectItem,
minChars:3,
maxItemsToShow:10,
cacheLength:10,
matchSubset:10
}
);
});
Сервлет вызывается выражением: autoSuggestAction.
Это пока не проблема.
Мой индексочень большой, и если я использую специальный термин (например, 123), где Lucene ничего не находит, функция ничего не отображает (как хотелось бы).Если я захочу в дальнейшем ввести символ «4», так что полный searchterm теперь «1234», я также не получаю никаких результатов (как и предполагалось).Обратите внимание: функция поиска повторяется.
Теперь моя конкретная проблема:
Если я наберу строку поиска, то есть тысячу раз (или много больше) в индексеLucene не может обработать этот запрос и выдает «TooManyClausesException».Я знаю, что могу увеличить значение для Booleanquery, но это будет стоить слишком много памяти.Вместо этого я отображаю результат, который записывается обратно в поле ввода и показывает пользователю дальнейшее определение строки поиска.Но если я сейчас введу символ в поле ввода, метод автозаполнения больше не будет вызываться.Может ли кто-нибудь помочь мне в этом случае?