jQuery自动完成和lucene的问题

时间:2010-07-21 09:44:46

标签: jquery autocomplete lucene

我在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的值,但这会耗费太多内存。相反,我显示一个结果,写回输入字段并显示用户进一步定义搜索字符串。但是,如果我现在在输入字段中键入一个字符,则不会再次调用自动完成方法。 在这种情况下,有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

原始请求者通过编辑jquery.autocomplete源代码中的“requestData(q)”函数来解决问题。

他/她评论了这一行:

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

现在搜索引擎显示了所需的结果。