如何使用jquery-select2上下文对象优化搜索结果?

如何使用jquery-select2上下文对象优化搜索结果?,jquery,jquery-select2,Jquery,Jquery Select2,(首先,由于我太笨,无法将文档转化为有效的解决方案,这是一个本质上的问题,对此第一次提交者表示歉意。希望有人会同情我:)) 基本上,我有以下简单的基于ajax的select2输入字段工作: $(document).ready(function () { var allUsersUrl = '/cmd/match_list/usrname'; $('#username').select2({ placeholder: 'Enter username',

(首先,由于我太笨,无法将文档转化为有效的解决方案,这是一个本质上的问题,对此第一次提交者表示歉意。希望有人会同情我:))

基本上,我有以下简单的基于ajax的select2输入字段工作:

$(document).ready(function () {

    var allUsersUrl = '/cmd/match_list/usrname';

    $('#username').select2({
        placeholder: 'Enter username',
        minimumInputLength: 3,
        allowClear: true,
        dropdownAutoWidth: true,
        ajax: {
            quietMillis: 150,
            url: allUsersUrl,
            dataType: 'json',
            data: function (term, page, context) {
                return {
                    fullstr: "n",
                    fromldap: "y",
                    exact: "n",
                    string: term,
                };
            },
            results: function (data, page) {
                return { results: data.Results };
            }
        }
    });
}
.
.
.
<input id="username" name="username">
$(文档).ready(函数(){
var allUsersUrl='/cmd/match_list/usrname';
$(“#用户名”)。选择2({
占位符:“输入用户名”,
最小输入长度:3,
allowClear:是的,
dropdownAutoWidth:true,
阿贾克斯:{
安静百万:150,
网址:allUsersUrl,
数据类型:“json”,
数据:函数(术语、页面、上下文){
返回{
fullstr:“n”,
fromldap:“y”,
准确:“n”,
字符串:术语,
};
},
结果:功能(数据、页面){
返回{results:data.results};
}
}
});
}
.
.
.
…但由于这涉及到一个相对缓慢且昂贵的后端LDAP查询,因此我希望在查找之后接收到的任何后续按键都能搜索初始结果,而不是启动另一个全新(但非常类似)的后端查找

例如,当我在字段中键入“smi”时,将显示52个匹配项的短名单。当我然后按“t”时,我希望在短名单中查找“smit”,而不是像当前那样执行另一个后端查找

文档中提到的“”对象听起来与我的问题非常相关,但我似乎无法从这一点过渡到有效的解决方案,到目前为止,我还没有找到任何其他人使用此对象的示例


我们将非常感谢您的建议,如果这只是本论坛中不属于本论坛的基本内容,我们将再次表示歉意。请提前感谢。

查看您引用的上下文文档,它表示上下文可用于翻页搜索一个搜索词的结果,当搜索词更改时,上下文删除该对象

由于您正在处理对ldap的缓慢api调用,我怀疑您必须引入缓存层。一种简单的方法是将ldap结果存储在数据库中的ldapcache表或memcache键值对中


然后,您可以将“smi”的响应重复使用几分钟。

非常感谢您的回复。不幸的是,我认为我无法在ldap Web服务器层中实现缓存层,因为它有多个(无状态)缓存层线程,因此后续查询可能不会命中缓存初始结果的线程。但是,您让我思考如何引入一个执行类似操作的本地函数(即,不是直接向ldap Web服务器调用ajax,而是调用一个维护先前搜索结果缓存的函数).还不知道这是否可能,但谢谢你给我另一个角度!