Forum Webscript.Ru

Общие => Базы данных => Тема начата: Greg от 26 Февраля 2006, 11:38:12

Название: поиск в BLOB
Отправлено: Greg от 26 Февраля 2006, 11:38:12
ситуёвина такая:
пользователь вводит текстовый запрос в форме (поискать ченить), а информация, в которой нужно искать, лежит в базе в формате BLOB. отсюда вопрос: как заставить искать текст в BLOB?

правильно ли я понимаю, что либо запрос, либо информацию из базы нужно приводить к формату (текст или BLOB)? к какому тады?

спасибо всем заранее
Название: поиск в BLOB
Отправлено: Greg от 27 Февраля 2006, 07:04:03
в общем-то проблема оказалась надуманной, оказывается в BLOB можно искать без проблем и независимо от подтипа

возник новый вопрос. делаю поиск и в запросе к базе хотелось бы использовать аналоги строковых PHP-функций, однако ничего подобного не нашел в SQL. Единственным выходом сейчас вижу такой: вытаскивать каждую запись, обрабатывать её как строку средствами PHP, а не SQL

может кто подскажет другие варианты? Всем спасибо!
Название: поиск в BLOB
Отправлено: hanslinger от 27 Февраля 2006, 10:03:01
В MySQL есть (http://dev.mysql.com/doc/refman/5.0/en/functions.html) всякие функции.
В большинстве случаев проблема „подобных функций“ решается правильным проектированием базы. Может, стоит задуматься?
Название: поиск в BLOB
Отправлено: Greg от 27 Февраля 2006, 11:56:20
hanslinger
действительно, подумываю об этом. к сожалению материалов по тому как строятся базы индекса для поиска я не нашёл. Может подскажешь чем?

дошел лишь до того, что в таблице содержаться ИД, путь к документу, заголовок и "чистый" текст документ (весь сайт на шаблонах, поэтому смысла в поиске меню и пр. нет смысла)... вот поиск и осуществляется в заголовке и тексте документа, дальше... дальше пока ничего - размышляю
Название: поиск в BLOB
Отправлено: commander от 27 Февраля 2006, 17:14:04
Greg
опиши задачу... нормально...
что у тебя есть?
Id документа, путь, заголовок и текст ?
поиск нужно организовать по каким полям? нужно ли пользовать словоформы и прочее...
Название: поиск в BLOB
Отправлено: Greg от 28 Февраля 2006, 07:18:16
commander
поля: ид, путь, заголовок-title, текст документа (основной текст без шапок, меню и т.п. - с тегами)
поиск нужно организовать по заголовку и тексту документа
хочу сделать пока простой поиск без словоформ, но потом его модернизировать потихоньку

мои мысли таковы:
1. найти максимальное количество совпадений искомой строки в заголовке и тексте документа (причем заголовку отдать большее предпочтение)
2. вывести результаты по убыванию

честно говоря, поиском по тексту ранее почти не занимался (исключая просто поиск слова или строки в тексте). сформулировать свои мысли толком не могу... ибо мало их!

Модераторам: может передем в алгоритмы?
Название: поиск в BLOB
Отправлено: commander от 28 Февраля 2006, 10:09:12
Greg

на сколько серьездный поиск ты собираешся реализовывать?
т.е.
1. нужно ли строить спинеты (части текста где встречаеться искомое слово)?
2. какой объем данных по которым нужно провести поиск?

короче выложи полную инфу что есть и что надо... иначе сложно что-то подсказать по этому поводу...
Название: поиск в BLOB
Отправлено: Greg от 28 Февраля 2006, 11:02:31
commander
1.на данный момент поиск осуществляется по нескольким сотням записей в базе (та информация, что храниться конкретно в базе), каждую неделю, на тысячу увеличивается, т.е. рассчитывать нужно на десятки и сотни тысяч записей

2. также имеются несколько сотен статичных документов, которые индексируются (как - описал выше)

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

хотелось бы на первоначальном этапе искать так:
1. совпадение фразы полностью в заголовке и документе
2. совпадени фразы в заголовке
3. совпадени фразы в тексте
4. совпадение нескольких слов фразы в заголовке и/или тексте
5. совпадение одного слова в заголовке и/или тексте

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

нужно чтобы набрав фразу "газовые котельные" человек попал на страницу новости, которая говорит о повальном перевооружении котельных области, а не получил результат со страницами (заголовки): "газовые аттаки в ираке" и пр.

на первоначальном этапе хочу сделать простой поиск без словоформ и т.п. мудреностей, далее думаю обязательно модернизировать... т.е. нужно понять весь алгоритм: от простого к сложному
Название: поиск в BLOB
Отправлено: commander от 01 Марта 2006, 17:43:40
Greg
если будет сотни тысяч записей от БД как таковой придеться отказаться...
Название: поиск в BLOB
Отправлено: Greg от 01 Марта 2006, 19:01:30
commander
каким же образом тогда искать?
Название: поиск в BLOB
Отправлено: Greg от 02 Марта 2006, 09:59:41
с BLOB\'ом кстати такая фигня вышла: пусть строка и подстрока имеют символы как в верхнем, так и в нижнем регистре. чтобы искать строчку в запросе использовал такую функцию upper() (подстроку тоже переводил в верхний регистр), но с блобом она никак не хочет работать - ругается...

может есть какое-то решение?
Название: поиск в BLOB
Отправлено: commander от 03 Марта 2006, 14:53:29
Greg
Цитировать
каким же образом тогда искать?

пользовать файлы...

Greg
Цитировать
может есть какое-то решение?

ИМХО напиши сам эту функцию... сложности там нет...
Название: поиск в BLOB
Отправлено: Greg от 10 Марта 2006, 14:39:18
commander
т.е. индекс держать в файле?
Название: поиск в BLOB
Отправлено: commander от 17 Марта 2006, 18:27:14
Greg
инфу держать в файле... а индексы в оперативной памяти..