Alguém pode me dar idéias ou recomendações sobre como construir um algoritmo de busca múltipla?
Por exemplo, eu tenho uma tabela de produtos em meu banco de dados MySQL e gostaria de poder pesquisar várias palavras-chave no banco de dados MySQL. title
e description
colunas. Essas palavras-chave podem conter várias palavras, por exemplo: "blue electric bosch toaster machine".
Qual seria o método ideal para realizar isso?
Até agora eu estava pensando em: 1 Usando o LIKE "% $ keywords%" no MySQL 2. Spliting as palavras-chave com base no espaço em branco, e pesquisando em cada palavra individual, mas eu acho que é melhor que eu procure por toda a palavra-chave.
Respostas:
2 para resposta № 1Faça uso da indexação de texto completo
1 para resposta № 2
Use OU entre palavras-chave para obter todos os registros que correspondam a pelo menos uma palavra-chave.
Em seguida, defina programaticamente um valor para cada correspondência. Por exemplo, atribua um valor maior à primeira correspondência de cada palavra-chave, para que os registros que correspondam a várias palavras-chave tenham precedência sobre aqueles que correspondam à mesma palavra várias vezes.
1 para resposta № 3
Usando o LIKE com porcentagens no início e no final, você terá um caractere curinga em cada lado da sua palavra-chave. Assim, você deve obter o que deseja.
Para procurar a frase inteira:
WHERE (Title LIKE "%blue electric bosch toaster machine%" OR Body LIKE "%blue electric bosch toaster machine%")
Ou para procurar cada palavra-chave individualmente (retornará mais resultados):
WHERE (Title LIKE "%blue%" OR Title LIKE "%electric%" OR Title LIKE "%bosch%" OR Title LIKE "%toaster%" OR Title LIKE "%machine%" OR Body LIKE "%blue%" OR Body LIKE "%electric%" OR Body LIKE "%bosch%" OR Body LIKE "%toaster%" OR Body LIKE "%machine%")
Se você está pesquisando em um conjunto de dados enorme e métodos comuns como LIKE são muito lentos, então eu recomendo usar algo como Esfinge - É muito rápido na pesquisa de texto completo.