/ / MySQL search match parte da palavra - mysql, sql, banco de dados

Pesquisa do MySQL corresponde a parte da palavra - mysql, sql, database

Para uma ferramenta de pesquisa pequena e simples no meu site, eu uso o MATCH AGAINST do MySQL para encontrar as linhas mais relevantes com base em um termo de pesquisa. Agora eu uso esta consulta:

SELECT * FROM mytable WHERE MATCH (name,description) AGAINST ("".$term."*" IN BOOLEAN MODE)

Se eu, por exemplo, procurar por "sys" a consultame dá resultados com palavras como sistema ou sistemas. O problema que eu estou tendo e o que eu gostaria de alcançar é que quando o termo de busca é "sistemas" eu só obtenho resultados com a palavra exata "sistemas", onde eu gostaria de obter resultados com a palavra "sistema" também.

Eu já verifiquei o Documentos, mas não consigo encontrar uma solução. Alguém já se deparou com isso antes?

Respostas:

0 para resposta № 1

Este é um pouco longo para um comentário.

O que você está pedindo geralmente é implementado emuma das duas maneiras em um mecanismo de pesquisa de texto completo. O método mais comum é uma lista de sinônimos para termos. Isso permitiria dizer que "sistema" e "sistemas" são a mesma coisa.

Até onde sei, o MySQL não suporta listas de sinônimos. Você pode implementá-los, de maneira complicada, pré-processando os dados ou consultas para substituir os valores de sinônimos.

A segunda abordagem é chamada stemming. Isso transforma palavras em sua forma "raiz", de modo que "sistemas" seriam reconhecidos como o plural de "sistema" e os dois corresponderiam. Stemming pode ser aplicado apenas na consulta. Ou, para os verdadeiramente ambiciosos, também pode ser aplicado no lado do armazenamento de documentos. O problema aí é ambigüidade. Inglês (e outras línguas) estão cheios de exceções, onde o stemming não faz sentido.