2010-07-21 5 views
2

J'utilise la saisie semi-automatique jQuery dans un fichier jsp et j'obtiens mes résultats de recherche à partir d'une servlet, où un index Lucene est recherché par rapport au terme donné qui doit être auto-complété. thats le code de la saisie semi-automatique dans le jsp:Problème avec jQuery autocomplete et lucene

$(document).ready(function() { 
    $("#QRY_ItemQuickSearch_enc").autocomplete("<%=autoSuggestAction%>", 
     { 
      onItemSelect:selectItem, 
      minChars:3, 
      maxItemsToShow:10, 
      cacheLength:10, 
      matchSubset:10 
     } 
    ); 
}); 

Le Servlet est appelé par l'expression: autoSuggestAction.

Ce n'est pas un problème pour le moment.

Mon index est très grand et si j'utilise pour un terme spécial (f.e: 123) où Lucene ne trouve rien, la fonction n'affiche rien (comme souhaité). Si je veux entrer plus loin le caractère "4", donc le searchterm complet est maintenant "1234", je n'obtiens pas non plus de résultats (comme prévu). Remarque: la fonction de recherche se répète.

Maintenant, mon problème concret:

Si je tape une chaîne de recherche, qui est mille fois (ou beaucoup plus) dans l'index, Lucene ne peut pas gérer cette requête et renvoie une « TooManyClausesException ». Je sais que je peux augmenter la valeur de la requête booléenne, mais cela coûtera trop de mémoire. Au lieu de cela, j'affiche un résultat, qui est réécrit dans le champ de saisie et montre à l'utilisateur de définir plus précisément la chaîne de recherche. Mais si je tape maintenant un caractère dans le champ de saisie, la méthode de saisie semi-automatique n'est pas appelée à nouveau. Quelqu'un peut-il m'aider dans ce cas?

+0

J'ai résolu le problème. J'ai édité la fonction "requestData (q)" dans le code source de jquery.autocomplete. J'ai inséré des commentaires aux lignes si (données) { receiveData (q, données); } Maintenant, mon moteur de recherche affiche les résultats souhaités. Cya – user397741

+0

Bien que vous avez trouvé une solution. Vous devriez le poster comme une réponse et l'accepter. Sinon, cette question ne sera pas résolue. – ponzao

Répondre

0

Le demandeur d'origine a résolu le problème en éditant la fonction "requestData (q)" dans le code source de jquery.autocomplete.

Il/elle a commenté la ligne:

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

Maintenant, le moteur de recherche affiche les résultats souhaités.