Как получить «комбинированное» ранжирование фраз OR с помощью CONTAINSTABLE в SQL Server?

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

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

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» (или каков первый термин). Я хотел бы иметь комбинированный рейтинг для условий ИЛИ ... По сути, сумма рангов каждой фразы.

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

sql,sql-server,tsql,

3

Ответов: 2


3

Я нашел ответ на этот вопрос после прочтения более подробной информации о возможностях 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

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

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


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

sql, sql-сервер, tsql,
Похожие вопросы