Сравнения полнотекстовых индексов в SQL Server 2005 Express - PullRequest
2 голосов
/ 12 января 2009

Как можно сравнить текстовое поле одной записи со всеми другими записями на сервере SQL, чтобы получить, например, 5 самых популярных записей?

Примером функциональности, которая мне нужна, являются различные плагины Related Posts для Wordpress, которые создают список ссылок на посты, связанные с просматриваемым в данный момент постом.

Ура, Иэн

Ответы [ 3 ]

1 голос
/ 20 мая 2009

Спасибо за эти ответы. Я знаком с ссылочными функциями, но не уверен, что они делают то, что мне нужно. Например:

SELECT P.id, 'Product' AS Type, FT.rank, C.url + '/' + P.url AS url, longTitle, shortTitle, P.description
FROM Products P
     INNER JOIN CONTAINSTABLE (Products, (longTitle, shortTitle), '"my text content"') AS FT ON P.id = FT.[key]
     LEFT JOIN Product_Categories PC ON P.id = PC.productID
     LEFT Join Categories C ON C.id = PC.categoryID
WHERE [primary] = 1
ORDER BY rank DESC

возвращает только строки с точной фразой «мое текстовое содержимое» - мне нужно вернуть строки только с «текстом», но с более низким рейтингом. Если я изменю запрос следующим образом:

SELECT P.id, 'Product' AS Type, FT.rank, C.url + '/' + P.url AS url, longTitle, shortTitle, P.description
FROM Products P
     INNER JOIN CONTAINSTABLE (Products, (longTitle, shortTitle), '"my" or "text" or "content"') AS FT ON P.id = FT.[key]
     LEFT JOIN Product_Categories PC ON P.id = PC.productID
     LEFT Join Categories C ON C.id = PC.categoryID
WHERE [primary] = 1
ORDER BY rank DESC

Я получаю больше строк, но строки со всеми тремя словами не выглядят явно выше, чем строки с 1 словом.

Есть еще мысли?

0 голосов
/ 17 мая 2009

Вам нужно использовать CONTAINSTABLE, это возвращает столбец RANK, по которому вы можете сортировать.

SELECT TOP 5 [Key] FROM CONTAINSTABLE ([YourFullText],'SomethingToSearch')
ORDER BY [RANK] DESC
0 голосов
/ 06 мая 2009

Вот, пожалуйста, от превосходного Роберта Каина:

http://arcanecode.com/2007/06/28/getting-started-with-sql-server-2005-full-text-searching-part-3-%E2%80%93-using-sql/

...