![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
Есть сайт, контента прилично постоянно добавляется, нужно сделать поиск по сайту:
варианты которые приходят в голову: 1) обычный поиск по всей базе через кучу "select * where text like %" - подобных запросов, но мне он что-то не нравится так как по идее может сильно напрячь базу.. 2) сделать 2-ю базу (туда дублировать основную) и искать только во 2-й базе (1-я база отдыхает) вообще подскажите кто как делает и как лучше? --------------------
Мой блог |
|||
|
||||
Валерия |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 598 Регистрация: 10.3.2007 Репутация: 3 Всего: 8 |
Однозначно что куча LIKE будет грузить нефигово при поиске.
ИМХО лучше дублировать вторую, причём вторую хранить как Heap и по cron синхронизировать первой. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
вариантов несколько:
1. поиск по индексу(т.е. выбираются некоторые "смысловые" слова и отбрасываются бессмысленные - предлоги, междометия и тыды; или же слишком короткие слова не считаются; или ещё каким образом отбираются "избранные"): а) индекс создается средствами РНР(можно сделать любой степени сложности, но требуется время; кроме того, изобретение велосипедов - не лучшее времяпровождение; да и скорость работы не будет впечатлять) б) индекс создавать внешней программой-индексатором; самым быстрым считается Sphinx. Достоинства - высокая скорость; недостаток - ограниченность заложенным в индексатор функционалом; плюс не каждый хостер разрешает запускать произвольные программы в) индекс создавать средствами СУБД: например, для MySQL существует механизм полнотекстового поиска(fulltext); недостаток - параметры полнотекстового поиска задаются в my.ini, который далеко не каждый хост дает редактировать. в любом случае, поиск по индексу не позволяет искать фразы/словосочетания. 2. поиск по тексту: а) выполняем поиск через like, locate или regexp - в зависимости от степени сумашествия. наблюдаем за медленной агонией СУБД ![]() б) выполняем поиск через like, locate или regexp, результат поиска кешируем на некоторое время. подход сильно поможет при значительной нагрузке и редком обновлении контента. недостаток - при динамичном контенте подход ничего не даст - либо поиск будет "тормозить", либо кеширование будет так быстро сбрасываться, что ничего не даст |
|||
|
||||
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
Девушка
![]() --------------------
Мой блог |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
||||
|
||||
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
ну можно например не по крону, а если юзер добавляет писать в обе базы.. или логировать что было добавлено за день в 1-ю, а потом по крону подливать во 2-ю.. думаю это не сильно напряжет сервер конечно на другой машине Это сообщение отредактировал(а) 31416 - 21.10.2008, 18:21 --------------------
Мой блог |
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
"Создать вторую базу" - шутка не удалась.
Как вы вообще в таком виде представляете поиск по сайту с огромной ветвленой структурой? Т.е. ну и что что мы нашли в таблице "bxd4_mnsdui3_irах2" совпадения? И куда нас приведет поиск? Помоему проще подключаться к внешним сервисам ака Гугле, передавать ему параметры поиска и потом парсить ХМЛ |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
awers, а как же период обновления индекса того же google'a? к примеру, если бы поиск по этому форуму был бы средствами индекса google'a, я бы стеснялся кого бы то ни было отправлять в поиск
![]() |
|||
|
||||
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
как раз подумал насчет этого как 3-й вариант причем тут ветвленная структура? как - обычно записи по которым поиск идет лежат в одной таблице, обычная выборка select+like, а определить положение найденной записи в дереве например - какие тут могут быть проблемы? --------------------
Мой блог |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
awers, кроме того, результаты google слишком бедны информативно. например, попробуй поискать по сайту market.yandex.ru тем же google, а потом попробуй внутренний механизм поиска этого каталога. сравни результаты....
|
|||
|
||||
awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
Так. Думаю стоит уточнить что я имел в виду по поводу ветвленой структуры и поиска.
Я что то очень редко вижу сайты где поиск только к примеру по статьям. К примеру у меня на сайте много разнородных разделов, у каждого свои таблицы и т.д. Ну как тут поможет копирование базы ) Никак. Хотя задачи разные бывают. Добавлено через 29 секунд да ) с гуглом промах |
|||
|
||||
DviRUS |
|
|||
![]() Капыч ![]() ![]() Профиль Группа: Участник Сообщений: 330 Регистрация: 24.10.2006 Где: Волгоград Репутация: 1 Всего: 5 |
В тему:
http://www.google.com/sitesearch/#utm_medi...utm_campaign=en Это сообщение отредактировал(а) DviRUS - 21.10.2008, 21:33 -------------------- Это не только мерзко, но и невозможно! (с) |
|||
|
||||
Sunvas |
|
|||
![]() Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 8 Всего: 89 |
Интересно, а как устроен поиск на этом сайте? Ведь поиск по всему форуму слова из трех-четырех букв занимает считаные секунды. Сомневаюсь, что это достигнуто за счет мощности сервера..
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 75 Всего: 260 |
не прав ты. намного, намного быстрее. если запрос выполняется несколько секунд, то десяток одновременно ищущих людей завлят сервер. и надругаются над трупом. мне почему-то кажется, что на форуме используется sphinx, но не помню, откуда такая инфорация. DviRUS, прикольно ![]() |
|||
|
||||
31416 |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 126 Регистрация: 3.5.2006 Репутация: нет Всего: нет |
ну и сколько разделов не больше же 10-20 ? ) вот 10-20 запросов соответственно по каждой ![]() в любом случае нагрузка с основной баз снизится --------------------
Мой блог |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |