【发布时间】:2011-03-18 21:34:51
【问题描述】:
我在 jsp 中使用 jQuery 自动完成功能并从 servlet 中获取我的搜索结果,其中针对应该自动完成的给定术语搜索 Lucene 索引。 这就是jsp中自动完成的代码:
$(document).ready(function() {
$("#QRY_ItemQuickSearch_enc").autocomplete("<%=autoSuggestAction%>",
{
onItemSelect:selectItem,
minChars:3,
maxItemsToShow:10,
cacheLength:10,
matchSubset:10
}
);
});
Servlet 由表达式调用:autoSuggestAction。
到目前为止没问题。
我的索引非常大,如果我使用 Lucene 找不到任何内容的特殊术语(例如:123),则该函数不会显示任何内容(如所愿)。如果我想进一步输入字符“4”,那么完整的搜索词现在是“1234”,我也没有得到任何结果(如预期的那样)。注意:搜索功能重复。
现在我的具体问题:
如果我在索引中键入一千次(或更多次)的搜索字符串,Lucene 将无法处理此查询并抛出“TooManyClausesException”。我知道我可以增加布尔查询的值,但这会消耗太多内存。相反,我显示一个结果,该结果被写回输入字段并显示用户进一步定义搜索字符串。但是如果我现在在输入字段中键入一个字符,则不会再次调用自动完成方法。 在这种情况下有人可以帮助我吗?
【问题讨论】:
-
我解决了这个问题。我在jquery.autocomplete的源代码中编辑了“requestData(q)”函数。我将 cmets 插入到 if (data) { receiveData(q, data);现在我的搜索引擎显示了想要的结果。赛亚
-
很高兴您找到了解决方案。您应该将其作为答案发布并接受。否则这个问题看起来没有解决。
标签: jquery autocomplete lucene