Soltando palavras de ruído na indexação de texto completo do SQL Server 2005

Em um cenário bastante típico, eu tenho uma caixa de texto 'Pesquisar' no meu aplicativo da Web, cuja entrada do usuário é passada diretamente para um procedimento armazenado, que usa a indexação de texto completo para pesquisar em dois campos em duas tabelas, que são unidas usando as teclas apropriadas.

Estou usando o predicado CONTAINS para pesquisar os campos. Antes de passar a string de pesquisa, faça o seguinte:

SET @ftQuery = '"' + REPLACE(@query,' ', '*" OR "') + '*"'

Mudandoo castelo para"o *" OU "castelo *", por exemplo. Isso é necessário porque quero que as pessoas possam pesquisarcas e obtenha resultados paracastelo.

WHERE CONTAINS(Building.Name, @ftQuery) OR CONTAINS(Road.Name, @ftQuery)

O problema é que agora que eu anexei um curinga no final de cada palavra, palavras de ruído (por exemplo,a) também têm um curinga anexado e, portanto, não parecem mais ser descartados. Isso significa que uma pesquisa poro castelo retornará itens com palavras comoteatro etc.

Alterar OR para AND foi o meu primeiro pensamento, mas parece que simplesmente não retorna correspondências se uma palavra de ruído for usada na consulta.

Tudo o que estou tentando alcançar é permitir que o usuário insira várias palavras separadas por espaço que representem a totalidade ou um prefixo das palavras que estão pesquisando, em qualquer ordem - e solte palavras de ruído, comoa de suas entradas (caso contrário, quando procuraremo castelo eles recebem uma grande lista de itens com o resultado que precisam em algum lugar no meio da lista.

Eu poderia seguir em frente e implementar meu próprio procedimento de remoção de palavras de ruído, mas parece que algo que a indexação de texto completo deve ser capaz de lidar.

Grato por qualquer ajuda!

Jamie

questionAnswers(4)

yourAnswerToTheQuestion