SQL Server 2008 полнотекстовый поиск не находит слова в словах? - PullRequest
1 голос
/ 12 марта 2010

В базе данных у меня есть поле с файлом .mht. Я хочу использовать FTS для поиска в этом документе. Я получил это работает, но я не удовлетворен результатом. Например (извините, это на голландском, но я думаю, вы поняли мою точку зрения) я буду использовать 2 слова: zieken и ziekenhuis Как видите, фраза «zieken» находится в слове «ziekenhuis».

Когда я выполняю поиск по 'ziekenhuis', я получаю около 20 результатов. Когда я ищу "zieken", я получаю 7 результатов. Как это возможно? Я имею в виду, почему FTS не возобновляет минимальные результаты, которые я получаю от 'ziekenhuis'?

Вот запрос, который я использую:

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)

1 Ответ

1 голос
/ 12 марта 2010

Я бы посоветовал вам использовать предикат CONTAINS , а не FREETEXT

Сценарии использования, включая то, что вы хотите достичь, можно найти в разделе примеров документации.

Из вашего описания я считаю, что вы пытаетесь выполнить поиск "Префикс". Например:

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

Это даст вам набор результатов, содержащий все слова, которые «содержат» префикс поискового термина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...