поиск по сайту

12
chemax
На сайте с 07.01.2009
Offline
206
833

сделал небольшой такой сайтик. все норм, но вот поиска нету. и придумать не могу ничего нормального.

например есть такая таблица (мускул) со столбцами name text translate и таблица со столбцом name

надо по ним организовать поиск

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

и такой запрос к базе

$sql = @mysql_query("SELECT * FROM `text` where text like '%$search%' ORDER BY `name`");

вопрос, не сильно грузит ли сервер, и второе можно ли организовать поиск сразу по всем полям и по возможности по другим таблицам

Качественный хостинг, VPS и сервера. (http://ihc.ru/?ref=569)
LP
На сайте с 19.02.2009
Offline
34
#1

Для того чтобы меньше грузить сервер и для лучшей безопасности от съкюл инъекций, вместо звездочки лучше перечислить поля таблицы через запятую. SELECT name, text FROM `text` where text like '%$search%' ORDER BY `name`.

Что касается поиска по нескольким полям, что мешает использовать типа SELECT name, text FROM `text` where text like '%$search%' and name like '%$strname%' ORDER BY `name`

Также имхо лучше не называть поля таблицы также как саму таблицу.

DeveloperRu
На сайте с 27.02.2009
Offline
72
#2

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

движок - самый лучший на сегодняшний день

Ответы на вопросы (http://telenok.com)
alynx
На сайте с 29.07.2007
Offline
41
#3

Все зависит от посещаемости ресурса.

Имхо для небольших сайтов можно и такое юзать :)

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

Дизайн сайтов-визиток, интернет-магазинов, порталов, etc. :) Портфолио (http://www.weblancer.net/users/Alynx/portfolio/) | Отзывы (/ru/forum/262475) Срочные заказы не беру. Работаю по предоплате 50%.
D
На сайте с 29.01.2009
Offline
42
#4
Для того чтобы меньше грузить сервер и для лучшей безопасности от съкюл инъекций, вместо звездочки лучше перечислить поля таблицы через запятую.

Для безопасности лучше использовать отдельный класс для запросов и обрабатывать переменные. Может я конечно в танке, но при чем тут звездочка и безопасность?

вопрос, не сильно грузит ли сервер

Смотря какой сервер и какая таблица, сколько в ней полей, записей. Вы можете замерять время выполнение запроса и в соответствии с этим решать, насколько это приемлимо для вашего сайта.

сегодня стал еще беднее
P
На сайте с 21.08.2008
Offline
65
#5

А как организовать поиск мп3-шек и фильмов по довольно большой базе (более 100 тыс. строчек)?

База хранится в excel в виде?

Prodigy | Omen | link

Lady Gaga | Fashion | link

| |

| |

| |

и т. д.

Хотелось бы сделать поиск как здесь zaycev.net/search.html только что бы не так глючило и не выводило одинаковых песен. А вот скорость поиска там супер!!!

Сложно сделать такой поиск? Кстати сам движок того сайта валяется везде.

[Удален]
#6
pianist:
Хотелось бы сделать поиск как здесь zaycev.net/search.html только что бы не так глючило и не выводило одинаковых песен.

На сёрче не знаю, а вот на зайцев и глючит, и иногда выводит однаковые песни.

P
На сайте с 21.08.2008
Offline
65
#7
*Volt*:
На сёрче не знаю, а вот на зайцев и глючит, и иногда выводит однаковые песни.

Это наверное проблема не в поиске, а потому что можно там добавить одинаковые композиции. А поиск работает у них нормально и видимо он был изменен, поэтому на нынешних сайтах на этом движке поиск еще старый.

chemax
На сайте с 07.01.2009
Offline
206
#8
LeshaPHP:

Что касается поиска по нескольким полям, что мешает использовать типа SELECT name, text FROM `text` where text like '%$search%' and name like '%$strname%' ORDER BY `name`

у меня есще должен быть поиск по таблице artist столбцу name

мне кажется что нагрузка сильная.

[Удален]
#9

Для поиска в больших текстах лайк нагнёт сервак на раз. Лучше так:

1. Отделяете значимые слова от предлогов, междометий и что там ещё, в зависимости от тематики.

2. Прогоняете стемером всё, что осталось от предыдущего сита.

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

Поиск организуется так:

1. Запрос разбивается на значимые слова

2. Значимые слова прогоняются стемером

3. Результаты стемирования хэшируются и ищутся в таблице с хэшами. По результатам поиска вытягиваются записи контента которым соответствуют хэши.

UPD. Если имеется ввиду поиск по малым текстовым полям, кторые укладываются в варчары, то хватит и лайка. Всё вышеперечисленное для текстовых полей.

chemax
На сайте с 07.01.2009
Offline
206
#10
nikitian:
Для поиска в больших текстах лайк нагнёт сервак на раз. Лучше так:
1. Отделяете значимые слова от предлогов, междометий и что там ещё, в зависимости от тематики.
2. Прогоняете стемером всё, что осталось от предыдущего сита.
3. сохраняете в табличку хэш того, что выдал стемер и где это находится (для этого логичнее 2 таблички: с хэшами и связь хэша с конкретной записью контента)
Поиск организуется так:
1. Запрос разбивается на значимые слова
2. Значимые слова прогоняются стемером
3. Результаты стемирования хэшируются и ищутся в таблице с хэшами. По результатам поиска вытягиваются записи контента которым соответствуют хэши.

UPD. Если имеется ввиду поиск по малым текстовым полям, кторые укладываются в варчары, то хватит и лайка. Всё вышеперечисленное для текстовых полей.

благодарен. у меня большие поля. вообще размер бд мегабайт 35. так что кэш получится оч большим.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий