Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
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;
....
любая идея...? Почему этот полнотекстовый поиск не работает ?
FreeTextTable должно сработать.
INNER JOIN FREETEXTTABLE(Person, (LastName, Firstname, MiddleName), @SearchString)
@SearchString должен содержать такие значения, как 'Phillip Fry' (одна длинная строка, содержащая все строки поиска, разделенные пробелами).
Если вы хотите найти Fr или Phil, вы должны использовать asterisk: Phil* и Fr*
'Phil' ищет именно то слово 'Phil'. 'Phil*' ищет каждое слово, которое начинается с 'Phil'
Если вы просто ищете имена людей, возможно, в ваших интересах даже не использовать полнотекстовый индекс. Полнотекстовый индекс имеет смысл, когда у вас есть большие текстовые поля, но если вы в основном имеете дело с одним словом на поле, я не уверен, сколько дополнительного вы получите от полнотекстовых индексов. Ожидание переиндексации полнотекстового индекса перед поиском новых записей может быть одной из многих проблем.
Вы можете просто сделать запрос, например, следующий. Разделите строку поиска на пробелы и создайте список условий поиска.
Select FirstName,MiddleName,LastName From person WHERE Firstname like @searchterm1 + '%' or MiddleName like @searchterm1 + '%' or LastName like @searchterm1 + '%' or Firstname like @searchterm2 + '%' etc....
Спасибо за ответы, ребята, я наконец-то смог заставить его работать. С частью ответов и бири, и Кибби. Мне нужно было добавить * к строке и разбить ее на пробелы, чтобы работать. Так что в конце концов я получил
....
@Name nvarchar(100),
....
--""s added to prevent crash if searching on more then one word.
DECLARE @SearchString varchar(100)
--Added this line
SET @SearchString = REPLACE(@Name, ' ', '*" OR "*')
SET @SearchString = '"*'+@SearchString+'*"'
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;
....
Есть еще поля, которые ищут, я просто упростил его для вопроса, извините за это, я не думал, что это повлияет на ответ. Он фактически ищет столбец, который имеет csv псевдонимов и столбец notes, а также.
Спасибо за помощь.
Другой подход может заключаться в отвлечении поиска от отдельных полей.
Другими словами, создайте представление для ваших данных, которое превращает все разделенные поля, такие как firstname lastname, в Объединенные поля, т. е. full_name
Затем выполните поиск по виду. Это, вероятно, упростит поисковый запрос.