2009-03-26 2 views
0

Я хочу, чтобы иметь возможность искать список полных имен. Демонстрации автозаполнения, которые я видел, все искали с самого начала. Это нехорошо, так как мне нужны матчи по фамилии.Могу ли я выполнять полнотекстовый поиск с помощью jquery Autocomplete?

Я могу жить без полнотекстового поиска, если он хотя бы следует за границами слов. Сорта похож на поиск тега. Это так?

Cheers

ответ

0

Вы можете. Просто возьмите элементы из функции на стороне сервера, которая выполняет фактический поиск. Например, SQL-сервер. Вы должны учитывать производительность. Большое количество строк может занять достаточно много времени, чтобы иметь «сломанный» автозаполнение.

+0

У меня есть только как 300 пунктов. Ajax кажется любопытным, как над убийством. – Jordie

0

Вот фрагмент, который ищет как и фамилию, даже если у вас есть несколько частичных слов в вашем поиске:

var arrayOfNames = [{first:"John", last:"Box"},{first:"Rachel", last:"Park"} 
       ,{first:"Rachel", last:"Dark"},{first:"Rachel", last:"Luck"}]; 

$("#input").autocomplete({ 
    source: function(request, response) { 
     var names = []; 
     var searchTerms = request.term.split(" ");; 
     $.grep(arrayOfNames, function(person, i) { 
      var matches = 0; 

      $.each(searchTerms, function(i, term) { 
       if(person.first.indexOf(term)>=0 || person.last.indexOf(term)>=0) 
        matches++; 
      }); 

      if(matches == searchTerms.length) 
       names.push({value:person.first+" "+person.last}); 
     }); 

     response(names); 
    } 
}); 

в действии здесь: http://jsfiddle.net/t29req1s/1/

Смежные вопросы