Recherche en text intégral SQL Server et espaces

J'ai une colonne avec un nom de produit. Certains noms ressemblent à 'ab-cd' 'ab cd' Est-il possible d'utiliser la search plein text pour get ces noms lorsque l'user tape 'abc' (sans espaces)? L'opérateur like travaille pour moi, mais j'aimerais savoir s'il est possible d'utiliser la search en text intégral.

La search de text intégral est basée sur des mots et des phrases. Il ne stocke pas le text original. En fait, selon la configuration, il ne stockera même pas tous les mots – il y a des mots d'arrêt qui ne vont jamais dans l'index. Exemple: en anglais le mot "in" n'est pas assez sélectif pour être considéré comme intéressant.

Certains noms ressemblent à 'ab-cd' 'ab cd'

Ceux qui ne sont probablement pas stockés du tout. Au less le deuxième exemple est en fait 2 mots extrêmement courts – très probablement ils sont totalement ignorés.

Donc, non – la search en text intégral ne convient pas pour cela.

Si vous souhaitez utiliser FTS pour find des termes adjacents, comme les mots séparés par un espace, vous devez utiliser un terme de proximité.

Vous pouvez définir un terme de proximité en utilisant le mot key NEAR ou l'opérateur ~ dans l'expression de search, comme indiqué ici .

Donc, si vous voulez find ab suivi immédiatement par cd vous pouvez utiliser l'expression,

 'NEAR((ab,cd), 0)' 

search du mot ab suivi du mot cd avec 0 termes entre-deux.

Non, malheureusement, vous ne pouvez pas faire une telle search en text intégral. Vous ne pouvez utiliser que LIKE dans ce cas LIKE ('ab%c%')

EDIT1:

Vous pouvez créer une vue ( WITH SCHEMABINDING !) Avec un id et un nom de colonne dans lequel vous souhaitez effectuer une search:

 CREATE VIEW dbo.ftview WITH SCHEMABINDING AS SELECT id, REPLACE(columnname,' ','') as search_ssortingng FROM YourTable 

Ensuite, créez un index

 CREATE UNIQUE CLUSTERED INDEX UCI_ftview ON dbo.ftview (id ASC) 

Ensuite, créez un index de search en text intégral sur le champ search_ssortingng .

Après cela, vous pouvez exécuter la requête CONTAINS avec la search "abc*" et il finda ce dont vous avez besoin.

EDIT2:

Mais cela ne vous aidera pas si search_ssortingng ne commence pas avec votre terme de search.

Par exemple:

ab cd -> abcd et vous searchz cd