Correspondência Fuzzy SQL

Espero não estar repetindo essa pergunta. Eu fiz alguma pesquisa aqui e google antes de postar aqui.

Estou executando uma eStore com o SQL Server 2008R2 com o texto completo habilitado.

Meus requisitos,Existe uma tabela de produtos, que tem o nome do produto, códigos OEM, modelo em que este produto se encaixa. Todos estão no texto.Eu criei uma nova coluna chamada TextSearch. Isso concatenou valores de Nome do Produto, Código OEM e Modelo em que este produto se enquadra. Esses valores são separados por vírgulas.Quando um cliente insere uma palavra-chave, executamos uma pesquisa na coluna TextSearch para corresponder aos produtos. Veja a lógica correspondente abaixo.

Estou usando um Híbrido Fulltext e normal gosto de fazer busca. Isso dá resultados mais relevantes. Todas as consultas executadas em uma tabela temporária e distinções foram retornadas.

Lógica de correspondência,

Execute o seguinte SQL para obter o produto relevante usando o texto completo. Mas o @Keywords será pré-processado. Diga 'CLC 2200' será alterado para 'CLC * E 2200 *'

SELECT Id FROM dbo.Product ONDE CONTÉM (TextSearch, @ Palavras-chave)

Outra consulta será executada usando normal como. Assim, o 'CLC 2200' será pré-processado em 'TextSearch como% clc% AND TextSearch como% 2200%'. Isso ocorre simplesmente porque a pesquisa de texto completo não busca padrões antes das palavras-chave. Por exemplo, ele não retornará 'pclc 2200'.

ID de SELECT DE dbo.Product WHERE TextSearch como '% clc%' E TextSearch como '% 2200%'

Se as etapas 1 e 2 não retornaram nenhum registro, a pesquisa seguinte será executada. O valor 135 foi bem ajustado por mim para retornar registros mais relevantes.

SELECT p.id FROM dbo.Product AS p INNER JOIN FREETEXTTABLE (produto, TextSearch, @ Palavras-chave) AS r ON p.Id = r. [CHAVE] WHERE r.RANK> 135

Todos acima combinados funciona bem em uma velocidade razoável e retorna produtos relevantes para palavras-chave.

Mas eu estou procurando melhorar ainda mais quando não há nenhum produto encontrado em tudo.

Diga se o cliente procura por 'CLC 2200npk' e este produto não estava lá, eu precisava mostrar em seguida muito perto de 'CLC 2200'.

Até agora eu tentei usarSoundex () função. Compre o valor computacional soundex para cada palavra na coluna TextSearch e compare com o valor da palavra-chave soudex. Mas isso retorna muitos registros e também lento.

Por exemplo, 'CLC 2200npk' retornará produtos como 'CLC 1100' etc. Mas isso não seria um bom resultado. Como não é próximo ao CLC 2200npk

Existe outro bomAqui. mas isso usa funções CLR. Mas eu não consigo instalar as funções do CLR no servidor.

Então minha lógica precisaria ser,

se 'CLC 2200npk' não for encontrado, mostre próximo de 'CLC 2200' se 'CLC 2200' não for encontrado, mostre próximo próximo por 'CLC 1100'

QuestõesÉ possível combinar como sugerido?Se eu precisasse corrigir correção ortográfica e pesquisar, o que seria bom? Todas as nossas listas de produtos estão em inglês.Existe alguma UDF ou SP para corresponder textos como minhas sugestões?

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion