【问题标题】:Problem with jQuery autocomplete and lucenejQuery自动完成和lucene的问题
【发布时间】: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


【解决方案1】:

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

他/她评论了这行:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 2010-12-04
    • 2011-08-08
    • 2013-01-22
    • 2016-05-31
    • 2011-10-08
    • 1970-01-01
    相关资源
    最近更新 更多