Как получить «комбинированное» ранжирование фраз OR с помощью CONTAINSTABLE в SQL Server? - PullRequest
3 голосов
/ 16 октября 2011

Я бы хотел получить «комбинированный» рейтинг фраз ИЛИ с CONTAINSTABLE, но мне не повезло.В основном я ищу функциональность для возможности AND / OR.

Например, скажем, у меня есть запрос, такой как:

SELECT TOP 100 * 
FROM JobData AS FT_TBL 
INNER JOIN CONTAINSTABLE(JobData, Description, '"microsoft" OR "C#" OR "5 years" OR "winforms"') AS KEY_TBL 
    ON FT_TBL.Id = KEY_TBL.[KEY] 
ORDER BY KEY_TBL.[RANK] DESC

И в моей таблице есть тысячи описаний должностей, где некоторые содержатвсе ключевые слова.То, что я вижу, это то, что он дает наивысший ранг тем, кто содержит «Microsoft» (или каков первый термин).Я хотел бы иметь комбинированный рейтинг для терминов ИЛИ ... По сути, сумма рангов каждой фразы.

Как я могу это сделать? Кажется, что это должно бытьбыть довольно тривиальным ... но мои поиски не дали никакой полезной информации по этому вопросу.

Ответы [ 2 ]

3 голосов
/ 17 октября 2011

Я нашел ответ на этот вопрос после прочтения более подробной информации о возможностях CONTAINSTABLE.Мое первоначальное предположение заключалось в том, что любые термины ИЛИ должны иметь одинаковый вес в списке терминов, поэтому значение общего ранга было суммой ранжирования каждого термина ... Я, конечно, обнаружил, что результаты противоречат этомупредположение, и именно поэтому я задал исходный вопрос.

Решение этой проблемы состоит в том, чтобы взвешивать каждый член в равной степени, используя ISABOUT, что приводит к эквивалентному поведению суммирования рангов каждого члена.

Таким образом, для примера, приведенного в исходном вопросе, я могу использовать следующее для достижения желаемых результатов:

SELECT TOP 100 * FROM JobData AS FT_TBL INNER JOIN CONTAINSTABLE(JobData, Description, 'ISABOUT("Microsoft" weight(.25), "C#" weight(.25), "5 years" weight(.25), "winforms" weight(.25))') AS KEY_TBL ON FT_TBL.Id = KEY_TBL.[KEY] ORDER BY KEY_TBL.RANK DESC

Это, конечно, может затем быть И с другими терминами для более сложных запросов.

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

0 голосов
/ 13 марта 2012

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

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