2011-11-01 15 views
5

Korzystanie z serwera Sql Server 2008 w jaki sposób można znaleźć dokładne dopasowanie do ciągu za pomocą wyszukiwania pełnotekstowego. Mam z tym dużo problemów i po prostu nie mogłem znaleźć satysfakcjonującego rozwiązania w Internecie.Znajdź dokładne dopasowanie za pomocą wyszukiwania pełnotekstowego.

Na przykład, jeśli szukam ciągu znaków "Bojan Skrchevski", chcę, aby pierwszy wynik był dokładnie taki.

Do tej pory próbowałem sformatować ciąg znaków jak: "Bojan * BLISKO Skrchevski *" i wywołać CONTAINSTABLE, aby uzyskać wyniki, ale ten ciąg jest sformatowany, aby zwracać więcej wyników, jak Bojana i Bojananana itp. Próbowałem również ORDER BY RANK, ale wciąż nie ma sukcesu.

Ponadto, w swoim struny posiada sekwencję podobną liczbę "3 1 7", ale z obecnym formatowania również zwraca "7 1 3" itd

przykład:

DECLARE @var varchar(4000); 
SET @var = '"Oxford*" NEAR 24 NEAR 7 NEAR 5 NEAR "London*"' 
SELECT [Key] FROM CONTAINSTABLE(dbo.[MyTable], [MyField], @var); 

Chcę być w stanie uzyskać dokładną kolejność. Aby nie uzyskać "Oxford 7 24 5 London".

Jak sformatować ciąg znaków, aby wykonać to poprawnie?

Odpowiedz

0

Może jedno podejście może być wybranie kilku wyników z wyszukiwania pełnotekstowego, a następnie SELECT specyficzny jeden z tych wyników. Ale może może być lepsze rozwiązanie tego problemu.

Próbowałem tego podejścia i faktycznie działało. Działa również o wiele szybciej niż po prostu SELECT wartość.

1

tam 2 opcje

1) To będzie uzyskać wszystkie elementy, które mają Mountain w ich imieniu

SELECT Name, ListPrice 
FROM Production.Product 
WHERE ListPrice = 80.99 
    AND CONTAINS(Name, 'Mountain'); 
GO 

2) ten dostanie wszystkie przedmioty, które mają te 3 sznurki w dokumencie bez względu na to, co zamówienie

SELECT Title 
FROM Production.Document 
WHERE FREETEXT (Document, 'vital safety components'); 

To zależy od tego, czego naprawdę chcesz, ale nie mogłem zrozumieć całkowicie.

Jeśli brakuje mi punktu, proszę napisać próbkę i jaki powinien być wynik.

kr,

Kristof

+0

@Kristoff - przykład: jeśli szukam ciągów takich jak ten: "Oxford 24 3 6 London" i jeśli jest "Oxford 3 24 6 Londyn", zostanie to również zwrócone. Chcę tylko dokładne dopasowanie w dokładnej kolejności. – TheBoyan

+0

W celach informacyjnych tutaj znajdują się przykłady: http://msdn.microsoft.com/en-us/library/ms142583.aspx – Mike

Powiązane problemy