Pois é, o problema é que o componente deles esbarra no problema citado por mim quando abri o tópico, infelizmente. Senão, seria perfeito.[/quote]
Nunca usei o autocomplete do jQuery via Ajax, mas creio que ele vá exibir os resultados que forem retornados do seu servidor, ele não vai obrigar que esteja na ordem a menos que você obrigue isso na sua query
No caso o que você precisaria era de um full text search ao invés de usar LIKE na query, por exemplo, no MySQL seria WHERE MATCH(nome) AGAINST (’+south +africa’ IN BOOLEAN MODE) no caso de obrigar as 2 palavras estarem presentes. Vê como é no seu banco e se preciso teria que usar software separado tipo o Lucene
Se eu pesquisasse por “africa south”, o teu exemplo retornaria as sugestões? Eu preciso que a sugestão seja dada ao usuário independemente da ordem das palavras. Sou novato em programação (como talvez tenha percebido), se tu me disser que é possível modificar o algoritmo de modo a atender meu requisito eu darei uma olhada mais a fundo nisso.
Quando você diz feito via AJAX você quis dizer que é obrigatório que ele vá no servidor buscar os resultados? Tipo porque tem 1 milhão de registros e seria inviável passar eles todos para o autocomplete. É porque o significado de AJAX é isso, fazer requisição assíncrona pro servidor, mas não sei se você quis dizer isso ou se passando tudo de uma vez e fazendo a filtragem no browser tá OK pra você, talvez consigo desenrolar dessa última forma também
É o seguinte: o resultado de algo do tipo SELECT * FROM é armazenado em buffer em um servidor. Novas consultas são realizadas pelo servidor a cada nova inserção no BD. Os clientes consultarão do buffer, sem SQL envolvido - a parte de banco é com o server. Eu preciso que esse campo de busca me dê sugestões a partir de uma ou mais keywords, não importando a ordem das palavras digitadas pelo usuário. Se eu digitar “Porto Alegre” ou “alegre porto”, a sugestão deverá ser idêntica.
[quote=caiodorn]É o seguinte: o resultado de algo do tipo SELECT * FROM é armazenado em buffer em um servidor. Novas consultas são realizadas pelo servidor a cada nova inserção no BD. Os clientes consultarão do buffer, sem SQL envolvido - a parte de banco é com o server. Eu preciso que esse campo de busca me dê sugestões a partir de uma ou mais keywords, não importando a ordem das palavras digitadas pelo usuário. Se eu digitar “Porto Alegre” ou “alegre porto”, a sugestão deverá ser idêntica.[/quote]No método que o JQuery chamar, você não poderia implementar essa lógica em java não?
Fiz um teste aqui, com o autocomplete totalmente no browser e seguindo o comportamento que você quer. O que ele exibe depende puramente do que a query retorna (no meu caso, do código Javascript). Segue o exemplo:
[code]
AutoComplete
<body>
<input type="text" id="search" name="search"/>
<script type="text/javascript">
var cidades = ['Porto Alegre', 'Porto Velho', 'Recife', 'São Paulo', 'Rio de Janeiro'];
$(document).ready(function() {
$('#search').autocomplete({ delay: 0, source: function(request, response) {
var tokens = $.trim(request.term).split(/\s+/);
response($.grep(cidades, function(cidade) {
var match = true;
$.each(tokens, function(i, token) {
if (!cidade.match(new RegExp('.*' + token + '.*', 'i'))) match = false;
});
return match;
}));
}});
});
</script>
</body>