SQL Server FTS: ранжирование немного странно - PullRequest
4 голосов
/ 26 февраля 2010

Я использую механизм полнотекстового поиска SQL Server 2008 на своем веб-сайте. У меня есть SP поиска, который показывает результаты, отсортированные по рейтингу.

Я разбиваю строку поиска и передаю ее в механизм запросов FTS следующим образом (строка поиска - «тестовый поиск»:

("*test*" ~ "*search*") OR ("*test*" OR "*search*").

Если в строке результатов есть строка «тестовый поиск», а в другой - «проверить что-то еще». Последний оценивается выше.

Я не понимаю, как это могло быть - очевидно, фраза «тестовый поиск» - более близкое совпадение. Я думаю, это как-то связано с тем, как я передаю тестовую строку в FTS. Есть идеи? Предложения?

1 Ответ

2 голосов
/ 25 апреля 2011

Все поисковые термины, имеющие ИЛИ, имеют одинаковый вес. Для того чтобы повысить рейтинг фразы «тест NEAR search», необходимо указать больший вес.

Пример

SELECT 
  Srch.*
FROM 
  CONTAINSTABLE
  (
    MyTable, 
    SearchColumn, 
    -- must specify a weight if one phrase is more important
    'ISABOUT(test ~ search weight(.7), test weight(.1), search weight(.2))', 
    LANGUAGE 1033, -- english
    100            -- TOP N RANK
  ) Srch
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...