我在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找不到任何内容的特殊术语(f.e:123),该函数不会显示任何内容(如所希望的那样)。如果我想进一步键入字符“4”,那么完整的searchterm现在是“1234”,我也没有得到任何结果(如预测的那样)。注意:搜索功能重复。
现在我的具体问题是:
如果我输入一个搜索字符串,这是索引中的一千倍(或更多),Lucene无法处理此查询并抛出“TooManyClausesException”。我知道我可以增加Booleanquery的值,但这会耗费太多内存。相反,我显示一个结果,写回输入字段并显示用户进一步定义搜索字符串。但是,如果我现在在输入字段中键入一个字符,则不会再次调用自动完成方法。 在这种情况下,有人可以帮助我吗?
答案 0 :(得分:0)
原始请求者通过编辑jquery.autocomplete源代码中的“requestData(q)”函数来解决问题。
他/她评论了这一行:
if (data) { receiveData(q, data); }
现在搜索引擎显示了所需的结果。