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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top