Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];
ВнизУмный поиск по БД вместо фильтрации. Как реализовать? Найти похожие ветки
← →
Kolan © (2009-04-09 16:08) [0]Здравствуйте!
В приложении сотрудничающем с MS SQL Server 2000 нужно сделать возможность искать данные в базе. В базе результаты измерений всяких штук-дрюк :) Задача довольно простая. Данные разные в основном числа и строки.
Есть идея попробовать не делать обычной фильтрации, а заменить её поиском. То есть, вместо, скажем, выпадающего списка с фразами вроде «Измерения за сегодня» или там «Измерения, сделанные Васей» сделать просто поле ввода, которое бы искало данные по текстовому запросу, как Яндекс.
Хотелось бы спросить у вас какие вы видите технические возможности реализации желаемого? То есть: как это сделать?
Стоит уточнить, что разработка должна быть осуществлена в реальные сроки.
И еще, не хотелось бы в этой ветке обсуждать вопросы человеко-машинного взаимодействия (то есть вопроса зачем мне все это нужно), я лишь хочу узнать о технических возможностях.
← →
12 (2009-04-09 16:20) [1]введеную строку разбить на слова, сделать like по всем полям всех таблиц, пересечь/заюнионить результаты по релевантности
← →
Anatoly Podgoretsky © (2009-04-09 16:27) [2]> Kolan (09.04.2009 16:08:00) [0]
Искать - Find/Locate можно на сервере, на клиенте можно делать только выборку. Для этого надо написать запрос на выборку по критерию. Информацию смотри в БОЛ, обрати внимание не полнотекстовый поиск, к сожалению многоформы для русского не работают. Ну и потребуется небольшой ИИ, которое можно узнать на Яндексе, если надо как Яндекс.
← →
Sergey13 © (2009-04-09 16:28) [3]> [0] Kolan © (09.04.09 16:08)
Поиск мелочи по карманам разительно отличается от поиска в том же яндексе, поэтому без уточнения конечной цели ответ на вопрос затрудняется.
"Искать по БД" это вообще несколько неправильная формулировка, ИМХО. Информация содержится (и ищется соответственно) в конкретных таблицах.
СУБД типа MSSQL умеют общаться с внешним миром ТОЛЬКО через SQL. Т.е. сформировав правильный запрос, ты получишь правильный ответ. Т.е. твоя задача сводится к построению правильных запросов.
← →
Kolan © (2009-04-09 16:38) [4]12, не это слишком просто — работать не будет.
Sergey13, идею вашу понял, тогда вопрос: как составить такой запрос? Как, к примеру, фразу «Вчерашние измерения» превратить вSELECT * FROM Measurements WHERE CreationDate = 2008-04-08
?
Анатолий, а что такое БОЛ и где его (её?) взять?
← →
12 (2009-04-09 16:43) [5]надо пользователям выдать составитель запросов
типа кнопки
Выбрать
Всех
больше
меньше
и т.п.
Пользователь тыкает кнопку Выбрать, у тебя sqltext:=\" select \" становится. так видел в одной программе.
← →
12 (2009-04-09 16:43) [6]БОЛ - book on line
← →
Ega23 © (2009-04-09 16:46) [7]
> СУБД типа MSSQL умеют общаться с внешним миром ТОЛЬКО через
> SQL
С чего ты взял?
← →
Anatoly Podgoretsky © (2009-04-09 16:52) [8]> Kolan (09.04.2009 16:38:04) [4]
Book OnLine - можно взять на Микрософте или читать в Online, она поможет по части запросов и построение полнотекстовых поисков.
Но у тебя основная проблема будет с ИИ да еще как на Яндексе, а это Ноу Хау
← →
Anatoly Podgoretsky © (2009-04-09 16:54) [9]> 12 (09.04.2009 16:43:05) [5]
Вообще то он хочет получить запрос из свободно формы, без выбора из предопределенного списка слов. Короче он претендует на докторскую, если не снизит аппетиты.
← →
12 (2009-04-09 16:54) [10]наоборот, в первом посте что сказал сложно реализовать
а вещь бы самому пригодилась
← →
Anatoly Podgoretsky © (2009-04-09 16:58) [11]> Ega23 (09.04.2009 16:46:07) [7]
В общето это так, все остальное обман, видимость, фата моргана.
← →
Игорь Шевченко © (2009-04-09 17:16) [12]
> То есть, вместо, скажем, выпадающего списка с фразами вроде
> «Измерения за сегодня» или там «Измерения, сделанные Васей»
> сделать просто поле ввода, которое бы искало данные по текстовому
> запросу, как Яндекс.
А что будет в текстовом поле в случае конкретно приведенных фраз ?
← →
Ega23 © (2009-04-09 17:35) [13]
> В общето это так, все остальное обман, видимость, фата моргана.
BOL под рукой нет, но, вроде как, у них чуть ли не Direct Access возможен?
Или я с чем-то путаю?
← →
sniknik © (2009-04-09 19:06) [14]в ADO у рекордсета есть FingFirst/FindNext/...
← →
Ega23 © (2009-04-09 19:40) [15]
> sniknik ©
Коля, есть у MSSQL какой-то интерфейс доступа кроме TSQL, или нет?
А то я что-то Подгорецкому не верю... :)
← →
sniknik © (2009-04-09 20:44) [16]в смысле интерфейс? типа ADOX, доступ к базе на уровне структуры?
http://img410.imageshack.us/img410/1641/adox.jpg
это?
← →
Sergey13 © (2009-04-10 08:58) [17]> [7] Ega23 © (09.04.09 16:46)
> С чего ты взял?
А как еще?
← →
Sergey13 © (2009-04-10 09:04) [18]> [4] Kolan © (09.04.09 16:38)
> Sergey13, идею вашу понял, тогда вопрос: как составить такой
> запрос? Как, к примеру, фразу «Вчерашние измерения» превратить в
> SELECT * FROM Measurements WHERE CreationDate = 2008-04-08?
Мне видится только ИИ.
← →
Ega23 © (2009-04-10 10:08) [19]
> А как еще?
С++, DiectAccess, серверный API...
Да этих интерфейсов по жизни - пруд пруди, просто в основной массе SQL везде используется.
← →
Kolan © (2009-04-10 12:15) [20]
> А что будет в текстовом поле в случае конкретно приведенных
> фраз ?
Примерно тоже самое, только текстом, а не пунктом списка.
Вроде примерно понятно — нужен ИИ. Думаю написание ИИ не подойдет в плане сроков разработки. Где бы взять готовый? У того же яндекса есть Яндекс.Серввер (http://company.yandex.ru/technology/server/), но как его использовать в программе — не знаю, как и не знаю может ли он решить такую задачу или нет.
Может есть какие-то готовые средства?
← →
Sergey13 © (2009-04-10 13:16) [21]> [19] Ega23 © (10.04.09 10:08)
Я как то совсем этим не интересовался никогда. В двух словах, если не трудно (или ссылку какую для чайников) - а по какому принципу там выбираются данные?
сори за офтоп.
← →
stas © (2009-04-10 13:18) [22]Kolan © (10.04.09 12:15) [20]
см. FULLTEXTINDEX - полнотекстовый поиск, с русским он работает начиная с 2005 вроде.
← →
Ega23 © (2009-04-10 13:26) [23]
> Я как то совсем этим не интересовался никогда. В двух словах,
> если не трудно (или ссылку какую для чайников) - а по какому
> принципу там выбираются данные?
положа лапу на сердце, я альтернативами никогда не пользовался. Но.
В 2005 и 2006 году на конференции "Корпоративны базы данных" (http://citforum.ru/seminars/cbd2009/) было очень много разговоров именно об альтернативах SQL-ю.
Точно помню, что Caсhe (есть такая СУБД) заявляли о C++ интерфейсе и о DirectAccess. Точно помню, что о C++ интерфейсе заявлялось Postgres-ом (причём он там чуть ли не более первичен, чем SQL).
И есть смутные воспоминания, что на презентации MSSQL 2005 Артёмов что-то про альтернативы также говорил.
Сейчас презентацию качаю, посмотрю...
> сори за офтоп.
Да это как раз не оффтоп, по теме всё...
← →
Игорь Шевченко © (2009-04-10 13:28) [24]
> Примерно тоже самое, только текстом, а не пунктом списка.
то есть, у тебя есть поле воода, ты туда вводишь "измерения за вчера" и оно должно выбрать все результаты, сделанные за предыдущий день от текущей даты ?
Блажен, кто верует, ему тепло на свете.
← →
Ega23 © (2009-04-10 13:44) [25]Вобщем так. В презентации что-то сказано о VB.NET и C#, но вот предоствляет ли MSSQL этот доступ через API или это некая прослойка, внутри которой один фиг TSQL сидит - я не понял (смотрел мельком).
Материалы конференции:
http://citforum.ru/seminars/index_db.shtml
Смотрел первый доклад за 2005 год.
← →
Kolan © (2009-04-10 15:15) [26]Игорь, а что тут мистического?
Есть ли еще предложения кроме полнотекстового поиска в MS SQL и самодельного ИИ?
← →
Sergey13 © (2009-04-10 15:25) [27]> [23] Ega23 © (10.04.09 13:26)
> [25] Ega23 © (10.04.09 13:44)
Спасибо, поковыряюсь на досуге.
← →
Игорь Шевченко © (2009-04-10 15:33) [28]Kolan © (10.04.09 15:15) [26]
Есть предложение. Не заниматься ИИ и не думать о такой возможности. Яндекс и прочие системы ищут по огромному индексу, который сами строят, тебе оно надо - в дополнение к имеющимся в базе данным строить еще невъ^H^H^H^Hбольшой индекс для целей, которыми будет пользоваться узкий круг ограниченных лиц, мучиться с встраиванием готового движка и прочими не менее увлекательными занятиями ?
Если уж так хочется предоставить "произвольный поиск", то неплохой совет дан в [1], хотя способ тормозной, но тут уже возможны варианты с индексом.
В любом случае (хоть я плохо представляю задачу) овчинка не стоит выделки
← →
stas © (2009-04-10 17:20) [29]см. [1]
Там без union можно, через field1 like "%slovo1%" or field1 like "%slovo2%"
и так далее...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.24;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.007 c