2010-03-12 4 views
1

Dans la base de données, j'ai un champ avec un fichier .mht. Je veux utiliser FTS pour chercher dans ce document. J'ai eu ce travail, mais je ne suis pas satisfait du résultat. Par exemple (désolé, c'est en néerlandais, mais je pense que vous avez compris), je vais utiliser 2 mots: zieken et ziekenhuis. Comme vous pouvez le voir, l'expression «zieken» se trouve dans le mot «ziekenhuis».La recherche de texte intégral SQL Server 2008 ne trouve pas le mot dans les mots?

Lorsque je recherche sur 'ziekenhuis', je reçois environ 20 résultats. Lorsque je recherche sur 'zieken', j'obtiens 7 résultats. Comment est-ce possible? Je veux dire, pourquoi le FTS ne restitue-t-il pas les résultats minimaux que j'obtiens de 'ziekenhuis'?

est ici la requête que j'utilise:

SELECT DISTINCT 
    d.DocID 'Id', 
    d.Titel, 
    (SELECT afbeeldinglokatie FROM tbl_Afbeelding WHERE soort = 'beleid') as Pic, 
    'belDoc' as DocType 
FROM docs d 
JOIN kpl_Document_Lokatie dl ON d.DocID = dl.DocID 
JOIN HandboekLokaties hb ON dl.LokatieID = hb.LokatieID 
WHERE hb.InstellingID = @instellingId 
    AND (
      FREETEXT(d.Doel, @searchstring) 
      OR FREETEXT(d.Toepassingsgebied, @searchstring) 
      OR FREETEXT(d.HtmlDocument, @searchstring) 
      OR FREETEXT (d.extraTabblad, @searchstring) 
     ) 
    AND d.StatusID NOT IN(1, 5) 

Répondre

1

Je suggère que vous regardez en utilisant le prédicat CONTAINS, par opposition à FreeText

scénarios d'utilisation, y compris ce que vous souhaitez réaliser, se trouvent dans la section des exemples de la documentation. De votre description, je crois que vous essayez d'effectuer une recherche "Préfixe". Par exemple:

USE AdventureWorks; 
GO 
SELECT Name 
FROM Production.Product 
WHERE CONTAINS(Name, ' "SearchTerm*" '); 
GO 

Ceci vous fournira un jeu de résultats contenant tous les mots qui "contiennent" le terme de recherche de préfixe.

+0

L'astérisque avant le terme de recherche n'est pas pris en charge par SQL Server. – Qsebas

Questions connexes