Можете ли вы выполнить поиск по ключевым словам 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 объясняет, как добавлять элементы в тезаурус.