Как назначить разные веса столбцам в полнотекстовом поиске SQL Server? - PullRequest
0 голосов
/ 10 июня 2010

Я использую SQL Server 2008 FTS, и я хотел бы иметь возможность интегрировать взвешенные рейтинги в мои результаты поиска. Тем не менее, я бы хотел взвесить столбцы, в которых поисковый запрос найден по-другому. Например, если у меня есть столбец «Заголовок» и «Описание», я хочу, чтобы совпадения, находящиеся в заголовке, имели более высокий рейтинг, чем совпадения в описании.

Возможно ли это в SQL Server 2008? Насколько я вижу, я могу добавлять веса только к определенным терминам, а не к расположению столбцов.

Ответы [ 2 ]

1 голос
/ 10 июня 2010

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

0 голосов
/ 04 мая 2012
SELECT title, filename, sum(relevance)
FROM (
    SELECT title, filename, 10 AS relevance FROM page WHERE title like ‘%about%’
    UNION
    SELECT title, filename, 7 AS relevance FROM page WHERE filename like ‘%about%’
    UNION
    SELECT title, filename, 5 AS relevance FROM page WHERE keywords like ‘%about%’
    UNION
    SELECT title, filename, 2 AS relevance FROM page WHERE description like ‘%about%’
) results
GROUP BY title, filename
ORDER BY relevance desc; 
...