Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> варианты реализации поиска по сайту 
V
    Опции темы
31416
Дата 21.10.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Есть сайт, контента прилично постоянно добавляется, нужно сделать поиск по сайту:
 
варианты которые приходят в голову:
1) обычный поиск по всей базе через кучу "select * where text like %" - подобных запросов, но мне он что-то не нравится так как по идее может сильно напрячь базу..
2) сделать 2-ю базу (туда дублировать основную) и искать только во 2-й базе (1-я база отдыхает)
 
вообще подскажите кто как делает и как лучше? 
--------------------
Мой блог
PM MAIL WWW ICQ   Вверх
Валерия
Дата 21.10.2008, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 598
Регистрация: 10.3.2007

Репутация: 3
Всего: 8



Однозначно что куча LIKE будет грузить нефигово при поиске.
ИМХО лучше дублировать вторую, причём вторую хранить как Heap и по cron синхронизировать первой.
PM MAIL   Вверх
skyboy
Дата 21.10.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



вариантов несколько:
1. поиск по индексу(т.е. выбираются некоторые "смысловые" слова и отбрасываются бессмысленные - предлоги, междометия и тыды; или же слишком короткие слова не считаются; или ещё каким образом отбираются "избранные"):
а) индекс создается средствами РНР(можно сделать любой степени сложности, но требуется время; кроме того, изобретение велосипедов - не лучшее времяпровождение; да и скорость работы не будет впечатлять)
б) индекс создавать внешней программой-индексатором; самым быстрым считается Sphinx. Достоинства - высокая скорость; недостаток - ограниченность заложенным в индексатор функционалом; плюс не каждый хостер разрешает запускать произвольные программы
в) индекс создавать средствами  СУБД: например, для MySQL существует механизм полнотекстового поиска(fulltext); недостаток - параметры полнотекстового поиска задаются в my.ini, который далеко не каждый хост дает редактировать.
в любом случае, поиск по индексу не позволяет искать фразы/словосочетания.
2. поиск по тексту:
а) выполняем поиск через like, locate или regexp - в зависимости от степени сумашествия. наблюдаем за медленной агонией СУБД smile
б) выполняем поиск через like, locate или regexp, результат поиска кешируем на некоторое время. подход сильно поможет при значительной нагрузке и редком обновлении контента. недостаток - при динамичном контенте подход ничего не даст - либо поиск будет "тормозить", либо кеширование будет так быстро сбрасываться, что ничего не даст
PM MAIL   Вверх
31416
Дата 21.10.2008, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Девушка smile  поясните пожалуйста, а что значит "хранить как Heap"?
--------------------
Мой блог
PM MAIL WWW ICQ   Вверх
skyboy
Дата 21.10.2008, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(31416 @  21.10.2008,  16:23 Найти цитируемый пост)
сделать 2-ю базу

если на том же сервере - то смысл? а если на другом сервере - то сколько времени будет уходить на синхронизацию, раз уж количество данных тормозит поиск?
PM MAIL   Вверх
31416
Дата 21.10.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Цитата

сколько времени будет уходить на синхронизацию


ну можно например не по крону, а если юзер добавляет писать в обе базы..
или логировать что было добавлено за день в 1-ю, а потом по крону подливать во 2-ю..
думаю это не сильно напряжет

сервер конечно на другой машине

Это сообщение отредактировал(а) 31416 - 21.10.2008, 18:21
--------------------
Мой блог
PM MAIL WWW ICQ   Вверх
awers
Дата 21.10.2008, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



"Создать вторую базу" - шутка не удалась.

Как вы вообще в таком виде представляете поиск по сайту с огромной ветвленой структурой? Т.е. ну и что что мы нашли в таблице "bxd4_mnsdui3_irах2" совпадения? И куда нас приведет поиск? 

Помоему проще подключаться к внешним сервисам ака Гугле, передавать ему параметры поиска и потом парсить ХМЛ
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 21.10.2008, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



awers, а как же период обновления индекса того же google'a? к примеру, если бы поиск по этому форуму был бы средствами индекса google'a, я бы стеснялся кого бы то ни было отправлять в поиск  smile 
PM MAIL   Вверх
31416
Дата 21.10.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Цитата(awers @  21.10.2008,  18:25 Найти цитируемый пост)
Помоему проще подключаться к внешним сервисам ака Гугле, передавать ему параметры поиска и потом парсить ХМЛ 

как раз подумал насчет этого как 3-й вариант

Цитата(awers @  21.10.2008,  18:25 Найти цитируемый пост)
"Создать вторую базу" - шутка не удалась.

Как вы вообще в таком виде представляете поиск по сайту с огромной ветвленой структурой? Т.е. ну и что что мы нашли в таблице "bxd4_mnsdui3_irах2" совпадения? И куда нас приведет поиск? 


причем тут ветвленная структура? как - обычно записи по которым поиск идет лежат в одной таблице,
обычная выборка select+like, а определить положение найденной записи в дереве например - какие тут могут быть проблемы?

--------------------
Мой блог
PM MAIL WWW ICQ   Вверх
skyboy
Дата 21.10.2008, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



awers, кроме того, результаты google слишком бедны информативно. например, попробуй поискать по сайту market.yandex.ru тем же google, а потом попробуй внутренний механизм поиска этого каталога. сравни результаты....
PM MAIL   Вверх
awers
Дата 21.10.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Так. Думаю стоит уточнить что я имел в виду по поводу ветвленой структуры и поиска.
Я что то очень редко вижу сайты где поиск только к примеру по статьям. К примеру у меня на сайте много разнородных разделов, у каждого свои таблицы и т.д. Ну как тут поможет копирование базы ) Никак. Хотя задачи разные бывают.

Добавлено через 29 секунд
да ) с гуглом промах
PM MAIL WWW ICQ Skype   Вверх
DviRUS
Дата 21.10.2008, 21:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Капыч
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.10.2006
Где: Волгоград

Репутация: 1
Всего: 5



В тему:
http://www.google.com/sitesearch/#utm_medi...utm_campaign=en

Это сообщение отредактировал(а) DviRUS - 21.10.2008, 21:33


--------------------
Это не только мерзко, но и невозможно! (с)
PM MAIL ICQ Skype   Вверх
Sunvas
Дата 21.10.2008, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 8
Всего: 89



Интересно, а как устроен поиск на этом сайте? Ведь поиск по всему форуму слова из трех-четырех букв занимает считаные секунды. Сомневаюсь, что это достигнуто за счет мощности сервера..


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
skyboy
Дата 22.10.2008, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(Sunvas @  21.10.2008,  22:31 Найти цитируемый пост)
Ведь поиск по всему форуму слова из трех-четырех букв занимает считаные секунды. 

не прав ты. намного, намного быстрее. если запрос выполняется несколько секунд, то десяток одновременно ищущих людей завлят сервер. и надругаются над трупом.
мне почему-то кажется, что на форуме используется sphinx, но не помню, откуда такая инфорация.
DviRUS, прикольно smile правда, ту же фильтрацию по параметрам таким способом не сделаешь, но поиск по неструктурированному материалу - запросто!
PM MAIL   Вверх
31416
Дата 22.10.2008, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 3.5.2006

Репутация: нет
Всего: нет



Цитата(awers @  21.10.2008,  21:20 Найти цитируемый пост)
К примеру у меня на сайте много разнородных разделов, у каждого свои таблицы и т.д. Ну как тут поможет копирование базы ) Никак

ну и сколько разделов не больше же 10-20 ? ) вот 10-20 запросов соответственно по каждой smile
в любом случае нагрузка с основной баз снизится


--------------------
Мой блог
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0951 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.