Можете ли вы выполнить поиск по ключевым словам AND с помощью FREETEXT() на SQL Server 2005?

Существует запрос о том, чтобы поиск SO по умолчанию выполнялся в стиле И по сравнению с текущим ИЛИ при использовании нескольких терминов.

Официальный ответ был:

не так просто, как кажется; мы используем функцию FREETEXT() в SQL Server 2005, и я не могу найти способ указать И против ИЛИ - не так ли?

Так есть ли способ?

Я могу найти несколько ресурсов, но я не эксперт.

3 ответа

Решение

ОК, это изменение в - мы сейчас используем CONTAINS() с неявным AND вместо FREETEXT() и его неявное OR,

Насколько я видел, это невозможно сделать при использовании FREETEXT() под SQL 2005 (ни 2008, afaik).

Запрос FREETEXT игнорирует логические операторы, операторы близости и подстановочные знаки в зависимости от конструкции. Однако вы можете сделать это:

WHERE FREETEXT('You gotta love MS-SQL') > 0
 AND FREETEXT('You gotta love MySQL too...') >  0

Или это то, что я думаю:)

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

Использование CONTAINS() вместо FREETEXT() может помочь.

Я только начал читать о свободном тексте, так что терпите меня. Если вы пытаетесь разрешить поиск тега, скажем, VB, также найти вещи, помеченные как VB6, Visual Basic, VisualBasic и VB.Net, не будут ли эти значения заданы как синонимы в тезаурусе БД, а не как параметры запроса?

Если это действительно так, эта ссылка в MSDN объясняет, как добавлять элементы в тезаурус.

Другие вопросы по тегам