Pergunta

Eu gostaria de executar uma pesquisa com mecanismo de texto MSSQL completa, onde dada a seguinte entrada do usuário: "Quadrado Hollywood"

Eu quero os resultados para ter tanto Hollywood e quadrado [s] em si.

Eu posso criar um método no servidor web (C #, ASP.NET) para produzir dinamicamente uma instrução SQL como esta:

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*"')
AND CONTAINS(TITLE, '"square*"')

Fácil suficiente. No entanto, eu gostaria deste em um procedimento armazenado para o benefício de velocidade adicional e segurança para a adição de parâmetros.

Posso ter o meu bolo e comê-lo?

Foi útil?

Solução

Eu concordei com acima, olhar para dentro e cláusulas

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,'"hollywood*" AND "square*"')

No entanto, você não deve ter que dividir as frases de entrada, você pode usar variável

SELECT TITLE
FROM MOVIES
WHERE CONTAINS(TITLE,@parameter)

pelo caminho procurar o termo exato (contém) procurar qualquer termo na frase (freetext)

Outras dicas

A última vez que eu tinha que fazer isso (com MSSQL Server 2005) Acabei mudando toda a funcionalidade de pesquisa sobre a Lucene (a versão Java, embora Lucene.Net agora existe eu acredito). Eu tinha grandes esperanças da pesquisa de texto completo, mas este problema específico me incomodou tanto que eu desisti.

Você já tentou usar o operador AND lógico na cadeia? I passar uma cadeia de matéria ao meu sproc e outras coisas 'E' entre as palavras.

http://msdn.microsoft.com/en-us/library /ms187787.aspx

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