Найти точное соответствие с помощью полнотекстового поиска - PullRequest
5 голосов
/ 01 ноября 2011

Используя Sql Server 2008, как вы можете найти точное совпадение строк с помощью полнотекстового поиска.У меня очень тяжелые времена с этим, и я просто не мог найти удовлетворительное решение где-либо в Интернете.

Например, если я ищу строку "Bojan Skrchevski", я хочу, чтобы первый результат былбудь именно таким.

До сих пор я пытался отформатировать строку наподобие: «Bojan * NEAR Skrchevski *» и вызвать CONTAINSTABLE для получения результатов, но эта строка отформатирована так, чтобы возвращать больше результатов в виде Bojana, Bojananana и т. д.Я также попытался ORDER BY RANK, но все равно безуспешно.

Кроме того, в моей строке есть последовательность чисел, например: "3 1 7", но при текущем форматировании она также возвращает "7 1 3"и т. д.

Пример:

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

Я хочу получить точный заказ.Не получить "Оксфорд 7 24 5 Лондон" в результате.

Как мне отформатировать строку, чтобы выполнить это правильно?

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Есть 2 варианта

1) Это получит все предметы, у которых в названии есть Гора

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

2) Это позволит получить все элементы, которые имеют эти 3 строки в документе, независимо от порядка

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

Это зависит от того, чего ты действительно хочешь, но я не мог полностью понять.

Если я упускаю суть, пожалуйста, опубликуйте образец и какой должен быть результат.

кр

Кристоф

0 голосов
/ 26 ноября 2011

Возможно, одним из подходов может быть выбор нескольких результатов с помощью полнотекстового поиска, а затем SELECT конкретного из этих результатов. Но, возможно, могло бы быть лучшее решение для этого.

Я попробовал этот подход, и он действительно сработал. Он также работает намного быстрее, чем просто SELECT значение.

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