Correspondência de raiz sql word
-
27-09-2019 - |
Pergunta
Estou me perguntando se os principais motores SQL por aí (MS SQL, Oracle, MySQL) têm a capacidade de entender que duas palavras estão relacionadas porque compartilham a mesma raiz.
Sabemos que é fácil combinar "networking" ao pesquisar na "rede" porque a última é uma substring do primeiro.
Mas os mecanismos SQL têm funções que podem corresponder à "rede" ao pesquisar "rede"?
Muito obrigado.
Solução
Esta funcionalidade é chamada de Stemmer: um algoritmo que pode deduzir um caule de qualquer forma da palavra.
Isso pode ser bastante complexo: por exemplo, palavras russas шёл
e иду
são formas diferentes do mesmo verbo, embora não tenham uma única letra comum (ironicamente, isso também é verdade para o inglês: went
e go
).
A quebra de palavras também pode ser uma tarefa bastante complexa para alguns idiomas que não usam espaços entre as palavras.
SQL Server
Permite o uso de candidatos e disjuntores de palavras em fulltext para o seu mecanismo de pesquisa de texto completo:
Outras dicas
Eu acho que o tópico é 'similaridade semântica'. Existem vários esforços tentando encontrar soluções ideais para esse problema.
Você pode tentar usar o SoundEx, embora possa não ser exatamente o que você deseja. Ver http://www.codeproject.com/kb/database/phonetic_search_mssql.aspx.
Como Quassnoi apontou, isso pode ser feito com Stemming. PostgreSQL implementa para Pesquisa de texto completo Se você ligá -lo.
ALTER TEXT SEARCH CONFIGURATION blah_en ADD MAPPING FOR english_stem;
Isso usa o Dicionário de bola de neve, que é baseado no Porter Stemmer. O Stemmer de Porter é provavelmente um dos candidatos mais utilizados, por isso fornecerá resultados decentes. É importante lembrar, porém, que o argumento não é sempre tão preciso quanto você quiser.