Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1237498202
Юрий
2009-03-20 00:30
2009.05.24
С днем рождения ! 20 марта 2009 пятница


15-1233457388
TUser
2009-02-01 06:03
2009.05.24
Асрономия в вопросах и ответах


2-1239017249
Ulugbek
2009-04-06 15:27
2009.05.24
как вставить CheckBox в Dbgrid ?


15-1237811203
немо2
2009-03-23 15:26
2009.05.24
Индексы в msqql2000. Эквивалентны ли такие действия?


2-1239123162
Tany
2009-04-07 20:52
2009.05.24
Помогите с sql запросом





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский