/ / MySQL algoritmo de pesquisa de palavras-chave múltiplas - php, pesquisa, mysql, pesquisa de texto completo

MySQL algoritmo de pesquisa de palavras-chave múltiplas - php, pesquisa, mysql, pesquisa de texto completo

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 № 1

Faç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.