Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Вниз

Full-text search   Найти похожие ветки 

 
Dimedrol ©   (2004-03-05 00:29) [0]

Коллеги, вот приспичило мне подумать над сабжем
"в свете" FireBird-a...
Назревает проект, в котором будет использоваться FB
база, и неплохо бы организовать полнотекстовый поиск
по текстовой информации там.

Подозреваю, что это непростая задача,
а посему - прошу совета:
не подскажет ли кто, как можно организовать
несложную систему полнотекстового поиска по базе ?
Ну, вот как например это реализовали (наконец-то!)
в MySQL, или что-то подобное.

В Сети встречал немало ссылок на ресурсы,
но, вот, что-то вроде - "как организовать
полнотекстовый поиск для чайников", не встречал.
Да и вообще, в основном натыкался или на обсуждение
MySQL-овского варианта, либо еще на что-то не то.

Никто не сталкивался ?
Подскажите плиз, куда копать ? С чего начать ?


 
Dimedrol ©   (2004-03-05 09:03) [1]

Что прямо вот никто не сталкивался... ? :-(


 
Digitman ©   (2004-03-05 09:11) [2]

что подразумевается под "полнотекстовым поиском" ?


 
Sergey_Masloff   (2004-03-05 09:23) [3]

>С чего начать ?
1) С выбора средств адекватных задаче
2) Если уж приспичило именно FB то реализуй руками. Парси руками BLOB на словоформы, строй по ним индексы и ищи по индексной таблице. Конечно пару книжек прочитать придется но вобщем-то военного ничего нет.
Поясню свою мысль - у тебя появляется таблица из пары столбцов - строка и ссылка на таблицу с информацией. Допустим у тебя аннотация к книжке:
 "в этой книге приводится справочный материал по языку SQL, чтавшему промышленным стандартом интерфейса реляционных баз данных..."
 Записана в BLOB в таблице TABLE1 в кортеже с идентификатором ID = 12345.
 Твоя задача построить таблицу ссылок TABLE2
 INDEX_STR  TABLE1_REF
 "книга"      12345
 "справочный" 12345
 "материал"   12345  
 "стандарт"   12345
 "базы данных"12345
и так далее

Ну и потом отбирай нужные записи по наибольшему числу соответствий. Проблема в том как разобрать текст на словоформы - это уже наука в двух словах не рассказать. Читай умные книги.


 
Dimedrol ©   (2004-03-05 09:40) [4]

2 Sergey_Masloff
Ага...
Ну, кстати, я и подозревал, что так оно и будет.
То есть, это и есть реализация полнотекстового поиска. ;-)
У нас в ооочень древнем проекте такая штука уже есть.

В принципе организовать его таким образом мне вполне по силам.
На счет словоформ, нууу...
в принципе у меня уже есть отписанный мною же алгоритм,
который составляет из текста уникальные слова и подсчитывает их
кол-во повторений. (На бинарном делеве основан)

2 Digitman
Дааа... вопрос конечно интересный ;-)
Даже растерялся немного ;-))

В принципе мне просто нужен механизм быстрого поиска
слов в тексте, или строке в базе данных.
Я слышал, что поиск where field1 like "%aaaa%"
не самый быстрый из возможных,
и поэтому производители СУБД начали
излогятся и придумывать различные фичи,
как-то "полнотекстовый поиск".
То есть это "алгоритм+иструмент" для обеспечения
более быстрого поиска текстовой информации.

Наверное наиболее понятно ;-) он реализован в последних версиях
MySQL-а.
Там при создании таблицы нужно указать
по каким полям строиться полнотекстовый индекс.
И потом если искать по этим полям с особым Sql синтаксисом,
то процесс поиска занимает куда более короткое время,
нежели поиск LIKE-ом.
Он описан тут:
http://www.mysql.com/doc/en/Fulltext_Search.html

То есть мне не нужны приблуды для поисковиков.
пока я копал инфу по этому вопросу,
нашел кучу разных ресурсов про downloadable поисковые
движки, в основном платные, которые, мол,
"нам помогут".
Но, подозреваю что там наворочена куча различных наворотов,
типа StopWord и т.п. которые скорее всего мне
не понадобяться.

Вот я и занялся поиском чего-нибудь более "легковесного"
и легкого в реализации.

Ну...
Что посоветуете ?


 
Digitman ©   (2004-03-05 09:51) [5]


> Что посоветуете ?


посоветую UDF
алгоритм сканирования содержимого полей записи в UDF будет тебе полностью подконтролен, и при грамотной оптимизации кода в любом случае это будет работать быстрее LIKE


 
Dimedrol ©   (2004-03-05 12:48) [6]

Мда.
Это может быть вариантом.

А то, что предложил ув. "Sergey_Masloff" ?
Что ты думаешь об этом ?


 
Карелин Артем ©   (2004-03-05 12:55) [7]

Справочник слов завести. И ссылки на источник.


 
Dimedrol ©   (2004-03-05 13:39) [8]

2 Карелин Артем ©
Ну это ведь, как я понимаю, то же что говорил "Sergey_Masloff" ?
Так ведь ?



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.032 c
1-1077897634
Andrew
2004-02-27 19:00
2004.04.04
Сертификаты открытого ключа


7-1074018687
Freaky
2004-01-13 21:31
2004.04.04
Изменение системного времени


4-1075176461
Drunya
2004-01-27 07:07
2004.04.04
Как поймать заголовки окон


1-1079088003
ChcngerMan
2004-03-12 13:40
2004.04.04
DLL


1-1079076462
Dysan
2004-03-12 10:27
2004.04.04
как ловить ошибки в COM-е





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский