Você pode realizar uma pesquisa AND de palavras-chave usando FREETEXT() no SQL Server 2005?
-
09-06-2019 - |
Pergunta
Existe um solicitar para tornar a pesquisa SO padrão para uma funcionalidade de estilo AND sobre o OR atual quando vários termos são usados.
A resposta oficial foi:
não é tão simples quanto parece;usamos o SQL Server 2005 TEXTO LIVRE() função, e não consigo encontrar uma maneira de especificar AND vs.OU - você pode?
Então, existe uma maneira?
Há um número de recursos nele posso encontrar, mas não sou um especialista.
Solução
OK, esta mudança está em vigor - agora usamos CONTAINS()
com implícito AND
em vez de FREETEXT()
e está implícito OR
.
Outras dicas
Pelo que vi, é não possível fazer AND ao usar FREETEXT() no SQL 2005 (nem 2008, afaik).
Uma consulta FREETEXT ignora operadores booleanos, de proximidade e curinga por design.No entanto, você poderia fazer isso:
WHERE FREETEXT('You gotta love MS-SQL') > 0
AND FREETEXT('You gotta love MySQL too...') > 0
Ou é o que eu penso :)
-- A ideia é avaliar como booleano, para que você possa usar operadores booleanos.Não sei se isso daria um erro ou não.eu penso isso deve trabalhar.Mas o material de referência aponta para o fato de que isso não é possível intencionalmente.
O uso de CONTAINS() em vez de FREETEXT() pode ajudar.
Acabei de começar a ler sobre texto livre, então tenha paciência comigo.Se o que você está tentando fazer é permitir pesquisas por uma tag, digamos VB, também encontrar coisas marcadas como VB6, Visual Basic, VisualBasic e VB.Net, esses valores não seriam definidos como sinônimos no Thesaurus do banco de dados em vez de parâmetros de consulta ?
Se esse for realmente o caso, este link no MSDN explica como adicionar itens ao Thesaurus.