使用Solr缓存自动完成功能

时间:2013-05-03 16:34:36

标签: jquery-ui solr

我正在使用jQuery-ui和Solr制作一个带有自动完成功能的整洁搜索框。该查询似乎运行良好,但结果实际上并未显示在我的搜索框中。这是我正在使用的代码:

var cache = {};
$("#Keyword").autocomplete({
    minLength: 3,
    source: function(request, response) {
        var term = request.term;
        if(term in cache) {
            response(cache[term]);
            return;
        }
        $.getJSON("http://127.0.0.1:8080/solr/terms/?terms=true&terms.fl=ctnt_val&wt=json&indent=on&terms.prefix=" + $("#Keyword").val(),
                request,
                function(data, status, xhr) {
                    cache[term] = data;
                    response(data);
        });
    }
});

所以我最好的猜测是我没有正确处理返回的值。如何让它们在搜索框下方正确显示?

1 个答案:

答案 0 :(得分:0)

我能够确定我的返回函数出了什么问题:我没有在结果中正确循环。最好的方法是使用map函数迭代它们。

$("#Keyword").autocomplete({
    minLength: 3,
    source: function(request, response) {
        $query = "http://127.0.0.1:8080/solr/terms/?jsoncallback=?&terms=true&terms.prefix=" + $("#Keyword").val();
        $.getJSON($query,
            request,
            function(data) {
                response($.map(data.terms.ctnt_val, function(item) {
                    return item;
                }));
            }
        );
    }
});