Результаты поиска
Почему SQL полнотекстовая индексация не возвращает результаты для слов, содержащих #?
Например, мой запрос выглядит следующим образом, используя SQL Server 2005:
SELECT * FROM Table WHERE FREETEXT(SearchField, 'c#')
У меня есть полнотекстовый индекс, определенный для использования столбца SearchField, который возвращает результаты при использовании:
SELECT * FROM Table WHERE SearchField LIKE '%c#%'
Я считаю, что # - это специальная буква, поэтому как я могу разрешить FREETEXT правильно работать для запроса выше?
SQL Сервер Полнотекстового Поиска
В настоящее время я работаю над приложением, в котором у нас есть база данных SQL-Server, и мне нужно получить полнотекстовый поиск, который позволяет нам искать имена людей.
В настоящее время пользователь может ввести в поле имя, которое ищет 3 разных varchar седла. Имя, Фамилия, Отчество
Так сказать, у меня есть 3 строки со следующей информацией.
1-Филлип-Джей-Фрай
2-Эми-NULL-Вонг
3-Лео-NULL-Вонг
Если пользователь вводит имя, например 'Fry', он возвращает строку 1. Однако, если они входят в Филлип Фрай, или фр, или Фил, они ничего не получают.. и я не понимаю, почему он это делает. Если они ищут Вонга, они получают строки 2 и 3, если они ищут Эми Вонг, они снова ничего не получают.
В настоящее время запрос использует CONTAINSTABLE, но я переключил его с FREETEXTTABLE, CONTAINS и FREETEXT без каких-либо заметных различий в результатах. Методы таблицы являются предпочтительными, поскольку они возвращают те же результаты, но с ранжированием.
Вот этот запрос.
....
@Name nvarchar(100),
....
--""s added to prevent crash if searching on more then one word.
DECLARE @SearchString varchar(100)
SET @SearchString = '"'+@Name+'"'
SELECT Per.Lastname, Per.Firstname, Per.MiddleName
FROM Person as Per
INNER JOIN CONTAINSTABLE(Person, (LastName, Firstname, MiddleName), @SearchString)
AS KEYTBL
ON Per.Person_ID = KEYTBL.[KEY]
WHERE KEY_TBL.RANK > 2
ORDER BY KEYTBL.RANK DESC;
....
любая идея...? Почему этот полнотекстовый поиск не работает ?
Можно ли выполнить AND поиск ключевых слов с помощью FREETEXT() на SQL Server 2005?
Существует запрос , чтобы сделать SO поиска по умолчанию для функциональности стиля AND по сравнению с текущим OR, когда используются несколько терминов.
Официальный ответ был таким:
не так просто, как кажется; мы используем функцию SQL Server 2005 FREETEXT() , и я не могу найти способ указать AND против OR - не так ли?
Итак, есть ли способ?
Есть ряд ресурсов , которые я могу найти, но я не эксперт.