Чем следует заменить ключевое слово SQL «ISABOUT» [устарело?]? - PullRequest
4 голосов
/ 06 апреля 2010

В полнотекстовом поиске MS SQL я использую ISABOUT в своих запросах.

Например, это должно вернуть первые 10 ProductIDs (PK) с полем RANK в таблице ProductDetails

SELECT * 
FROM CONTAINSTABLE( ProductDetails, *, ISABOUT("Nikon" WEIGHT (1.0), "Cameras" Weight(0.9)), 10 )

Однако, согласно документации SQL ISABOUT устарела.

Итак, у меня два вопроса:

  1. Чем заменяется ISABOUT на
  2. НУЖНА ли мне еще какая-нибудь SQL Command там? (IOW, было бы лучше поместить фразу поиска 'Nikon Cameras'?)

То, что я первоначально пытался сделать здесь, это взвесить первое слово самым высоким, затем вторым словом более низким и продолжать опускаться до 0,5, где я бы просто присвоил остальным словам значение 0,5.

Моя логика (и, возможно, она ошибочна) заключалась в том, что наиболее релевантные поисковые слова людей обычно встречаются в начале фразы (на английском языке).

  • Я поступаю неправильно?
  • Есть ли лучший способ?
  • Я задаю слишком много вопросов? (^ _ ^)

Спасибо всем за ваше время ...

Ответы [ 2 ]

6 голосов
/ 08 апреля 2010

Ваша ссылка выше относится к поиску в корпоративной среде, но для полнотекстового поиска SQL Server ISABOUT все еще поддерживается как часть предиката CONTAINS и CONTAINSTABLE .

Этот вопрос также освещался в сообщении на форуме MSDN SQL Server Search .

2 голосов
/ 22 ноября 2016

ISABOUT добавляет пользовательские веса к вашим словам, которые помогают в ранжировании возвращаемых документов. Для CONTAINS() это не делает никакого ранжирования, эта форма не имеет никакого влияния.

...