Проблема с автозаполнением jQuery и lucene - PullRequest
2 голосов
/ 21 июля 2010

Я использую автозаполнение 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, но это будет стоить слишком много памяти.Вместо этого я отображаю результат, который записывается обратно в поле ввода и показывает пользователю дальнейшее определение строки поиска.Но если я сейчас введу символ в поле ввода, метод автозаполнения больше не будет вызываться.Может ли кто-нибудь помочь мне в этом случае?

1 Ответ

0 голосов
/ 11 января 2011

Оригинальный запросчик решил проблему, отредактировав функцию requestData (q) в исходном коде jquery.autocomplete.

Он прокомментировал строку:

    if (data) { receiveData(q, data); } 

Теперь поисковая система показывает желаемые результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...