推特的Typeahead建议订购

时间:2017-04-26 01:35:43

标签: search twitter typeahead bloodhound

手头的问题是搜索建议没有按照图片中显示的相同起始字符排序:'ne' should be at the very top, yet it is at the very bottom

如何解决此问题?

以下是我的代码`$(document).ready(function() {     // var queries = bank;

var queries = ['there is no need', 'need', 'no need', 'ne'];

//Dataset defined in index.php
// *****
//(NOTE: Typehead works by the order of the elements in dataset, thus
//          they are ordered in the database first based on count)

//Constructing the suggestion engine
var queries = new Bloodhound(
    {
        datumTokenizer: Bloodhound.tokenizers.whitespace,
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        local: queries
    });

// Initializing the typeahead (.typehead is the selector having what's currently
//                                  being typed)
$('.typeahead').typeahead(
    {
        hint: true,
        highlight: true, /* Enable substring highlighting */
        minLength: 1 /* Specify minimum characters required for showing result */
    },
    {
        name: 'queries',
        source: queries
    });

}); `

1 个答案:

答案 0 :(得分:0)

如果使用函数初始化sorter属性,Bloodhound将使用它来对匹配的条目进行排序,如下所示:

var queries = new Bloodhound(
{
    datumTokenizer: Bloodhound.tokenizers.whitespace,
    queryTokenizer: Bloodhound.tokenizers.whitespace,
    local: queries,
    sorter: function(a, b) {
        if (a < b) {
            return -1;
        }
        else if (a > b) {
            return 1;
        }
        else return 0;
    }
});

所以,只需延长Bloodhound的初始化,你就可以了。