Есть самописный двиг. Сайт состоит из разделов независимых друг от друга. (Новости, обычные страницы, каталог и т.д.). Все данные лежат в бд.
Новости и страницы - имеют стандартную структуру в бд описывать ее не имеет смысла, страница формируется с помощью одного запроса SELECT title, descr, content From news( или pages) Where id=$d (это упрощенный вариант, чтобы понять суть вопроса).
Страница с товаром формируется десятком заросов и сложными вычислениями.
Вопрос:
как организовать поиск по сайту с помощю БД (обязательно с постраничным выводом)?
как я вижу решение этой проблемы:
контент каждой страницы с помощью буфера засовывать в бд в отдельную таблицу со структурой id url title content
и по ней производить поиск. Идея, я думаю, очень хорошая но хотелось бы узнать как делают другие.
Из минусов этого метода нужно выделить то что нужно следить за тем чтобы не создавалось мусора(т.е. своевременно удалять или обновлять эти данные).
В общем это похоже на кеширование страниц в отдельную таблицу в БД.
Помогите пожалуйста, срочно нужно.
P.S. Мне код не нужен, я php знаю хорошо, помогите с логикой. Если можно сделать все ч помощью MYSQL было бы вообще здорово.
Спустя 2 минуты, 26 секунд (2.03.2012 - 01:10) siptik написал(а):
разделять поск по каждому разделу отдельно - не пододит.
Буду разрабатывать портал в скором очень пигодится информация
Буду разрабатывать портал в скором очень пигодится информация
Спустя 7 часов, 41 минута, 28 секунд (2.03.2012 - 08:52) TranceIT написал(а):
В двиге одного интернет магазина видел:
Была создана отдельная табличка для поиска и в админке кнопка "Оптимизация поиска". По клику таблица обнулялась и в нее складывались все тексты, описания и параметры, по которым проходит поиск и сравнивалась при помощи %LIKE% с запросом поиска, если находились совпадения, то выдавало ссылки, где данный текст присутствует.
Была создана отдельная табличка для поиска и в админке кнопка "Оптимизация поиска". По клику таблица обнулялась и в нее складывались все тексты, описания и параметры, по которым проходит поиск и сравнивалась при помощи %LIKE% с запросом поиска, если находились совпадения, то выдавало ссылки, где данный текст присутствует.
Спустя 1 час, 28 минут, 19 секунд (2.03.2012 - 10:20) alexbel2404 написал(а):
Посмотри в сторону sphinx или почитай про MyISAM и поиску по fulltext index.
Спустя 10 часов, 10 минут, 21 секунда (2.03.2012 - 20:30) siptik написал(а):
Цитата (TranceIT @ 2.03.2012 - 05:52) |
В двиге одного интернет магазина видел: Была создана отдельная табличка для поиска и в админке кнопка "Оптимизация поиска". По клику таблица обнулялась и в нее складывались все тексты, описания и параметры, по которым проходит поиск и сравнивалась при помощи %LIKE% с запросом поиска, если находились совпадения, то выдавало ссылки, где данный текст присутствует. |
а если страниц будет пару тысяч? Наверно, придется закрывать доступ к сайту на время индексирования. Аесли будут коментарии к статьям и т.д. придется часто делать эту процедуру. То, что в том магазине = мой вариант. Но всеравно спасибо за совет, я просто никогда не делал такой поиск, в основном ограничивалось примитивными поисками. Для данного сайта, что я делаю этот способ сгодится, но может есть еще какие нибудь варианты. хотелось бы как-то сделать не жрущий ресурсы скрипт.
есть второй вариант, основанный на первом, на cron вешать индексацию каждого раздела по отдельности, раз в сутки, например.
Спустя 16 минут, 13 секунд (2.03.2012 - 20:47) siptik написал(а):
Цитата (alexbel2404 @ 2.03.2012 - 07:20) |
Посмотри в сторону sphinx или почитай про MyISAM и поиску по fulltext index. |
Я то и думал производить полнотекстовый поиск по этой таблице. Но меня больше интересует оптимальный вариант занесения данных в эту таблицу. Т.к. используется не сервер, а виртуальный хостинг. как организовать индексацию этих страниц с наименьшим сопротивлением?
Спустя 7 минут, 13 секунд (2.03.2012 - 20:54) TranceIT написал(а):
Цитата (siptik @ 2.03.2012 - 19:30) |
а если страниц будет пару тысяч? Наверно, придется закрывать доступ к сайту на время индексирования. Аесли будут коментарии к статьям и т.д. придется часто делать эту процедуру. То, что в том магазине = мой вариант. Но всеравно спасибо за совет, я просто никогда не делал такой поиск, в основном ограничивалось примитивными поисками. Для данного сайта, что я делаю этот способ сгодится, но может есть еще какие нибудь варианты. хотелось бы как-то сделать не жрущий ресурсы скрипт. |
300 страниц по 10 товаров меньше минуты обрабатывало.
Спустя 1 минута, 23 секунды (2.03.2012 - 20:55) Visman написал(а):
siptik
Если хочешь в отдельную таблицу данные заносить для поиска, то вот такая идея.
Создаем отдельную табличку (непроиндексированных страниц) в которой будут храниться адреса для сканирования данных на занесение в таблицу на поиск (сам не понял, что сказал
).
Дальше, если не хочешь кроном, то добавляешь запуск индексирования при любом обращении к сайту.
НО!
За один раз, например, индексируется только один адрес из таблицы непроиндексированных страниц, и потом этот адрес удаляется из таблицы.
Если что-то на странице было изменено, то ее адрес добавляется в непроиндексированные.
Если будешь кроном делать, то его можно настроить на малый период запуска и действовать аналогично.
З.Ы. Пока писал новое сообщение появилось.
Если хочешь в отдельную таблицу данные заносить для поиска, то вот такая идея.
Создаем отдельную табличку (непроиндексированных страниц) в которой будут храниться адреса для сканирования данных на занесение в таблицу на поиск (сам не понял, что сказал
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Дальше, если не хочешь кроном, то добавляешь запуск индексирования при любом обращении к сайту.
НО!
За один раз, например, индексируется только один адрес из таблицы непроиндексированных страниц, и потом этот адрес удаляется из таблицы.
Если что-то на странице было изменено, то ее адрес добавляется в непроиндексированные.
Если будешь кроном делать, то его можно настроить на малый период запуска и действовать аналогично.
З.Ы. Пока писал новое сообщение появилось.
Спустя 3 минуты, 17 секунд (2.03.2012 - 20:59) TranceIT написал(а):
А если при добавлении товара или комментария, создавать запись в таблицу для поиска то еще проще.
Спустя 20 минут, 21 секунда (2.03.2012 - 21:19) siptik написал(а):
Цитата (TranceIT @ 2.03.2012 - 17:54) | ||
300 страниц по 10 товаров меньше минуты обрабатывало. |
а сама страница с товаром индексировалась?
как я понимаю по времени, это был виртуальный хостинг?
Спустя 5 минут, 2 секунды (2.03.2012 - 21:24) TranceIT написал(а):
Цитата (siptik @ 2.03.2012 - 20:19) |
как я понимаю по времени, это был виртуальный хостинг? |
Это был локальный хостинг. Про саму страницу ничего не могу сказать. Я вскользь просматривал коды. Задача стояла совершенно другая.
Спустя 5 минут, 58 секунд (2.03.2012 - 21:30) siptik написал(а):
Visman
я думаю сделать так:
пользователь заходит на страницу, проверяется сколько времени прошло с последнего занесения в бд этой страницы
, если более 6 часов назад, то обновлять кэш. Я думаю для системы два запроса в бд роли не сыграют. link поставить индексом.
я думаю сделать так:
пользователь заходит на страницу, проверяется сколько времени прошло с последнего занесения в бд этой страницы
....
function getCacheCount()
{
$sql = "SELECT count(*) FROM `cache` WHERE `url`='".$this->URL."' AND time_cache > '".strtotime("-6 hours")."'";
$count= $this->db->query($sql);
if($count['count(*)']>0)return true;
else return false;
}
...
, если более 6 часов назад, то обновлять кэш. Я думаю для системы два запроса в бд роли не сыграют. link поставить индексом.
Спустя 14 минут, 18 секунд (2.03.2012 - 21:44) siptik написал(а):
Цитата (TranceIT @ 2.03.2012 - 18:24) | ||
Это был локальный хостинг. Про саму страницу ничего не могу сказать. Я вскользь просматривал коды. Задача стояла совершенно другая. |
блин, многовато. На хостинге в разы медленнее. Хотя если ночью сделать, думаю, не слишком накладно будет. Давть скрипту поспать минуту после определенного числа проиндексированных страниц.
Спустя 5 минут, 39 секунд (2.03.2012 - 21:50) TranceIT написал(а):
Цитата (siptik @ 2.03.2012 - 20:30) |
если более 6 часов назад, то обновлять кэш |
Это получается ты будешь делать запрос на время, потом, если условие выполняется, будешь делать апдейт. Как ни крути у тебя минимум 1 запрос будет при обращении к странице. Не выгоднее ли в плане производительности делать апдейт сразу при обращении?
Спустя 3 минуты, 50 секунд (2.03.2012 - 21:54) siptik написал(а):
Цитата (TranceIT @ 2.03.2012 - 18:50) |
Это получается ты будешь делать запрос на время, потом, если условие выполняется, будешь делать апдейт. Как ни крути у тебя минимум 1 запрос будет при обращении к странице. Не выгоднее ли в плане производительности делать апдейт сразу при обращении? |
Мне кажется, что выборка count бысрее чем update(это чисто мое предположение), поэтому я так и сделал.
Спустя 3 минуты, 45 секунд (2.03.2012 - 21:57) TranceIT написал(а):
siptik
count считает кол-во строк и не имеет никакого отношения к датам.
count считает кол-во строк и не имеет никакого отношения к датам.
Спустя 3 минуты, 3 секунды (2.03.2012 - 22:00) siptik написал(а):
оно считает количество строк с таким url и с определенной датой, если находит что есть такая строка, возращает количество, если нет - 0.
Спустя 52 минуты, 35 секунд (2.03.2012 - 22:53) siptik написал(а):
а в твоем случае оно должно проверить существование строки, если нашло, то удалить и вставить, если не нашло то вставить. И это при каждом обращении два - три запроса! А у меня скрипт обновляет и удаляет не не чаще чем шесть часов.
Спустя 56 минут, 6 секунд (2.03.2012 - 23:49) vmunt написал(а):
Цитата (siptik @ 2.03.2012 - 03:10) |
разделять поск по каждому разделу отдельно - не пододит. |
А почему, собственно?
Если на сайте пять разделов, то не надо делать пять кнопок поиска. Достаточно одной кнопки, которая запускает что-либо подобное:
При таком подходе можно даже сделать всплывающую формочку расширенного поиска и разрешить пользователям выбирать набор разделов для поиска. Вариантов тьма на самом деле. Поэтому стартовое ограничение несколько непонятно...
Если на сайте пять разделов, то не надо делать пять кнопок поиска. Достаточно одной кнопки, которая запускает что-либо подобное:
$search_results='';
function search()
{
global $search_results;
$search_results = array();
search_part_1(); // Функция дописывает в массив записи по результатам поиска по первому разделу...
search_part_2(); // ... по второму...
search_part_3(); // Строки массива результатов поиска также сделать массивами с полями Заголовок, Раздел, Ссылка, Релевантность, Фрагмент текста, ну и так далее...
...
// Если надо перемешать результаты поиска (по алфавиту, релевантности), использовать sort любого вида
} // search()
При таком подходе можно даже сделать всплывающую формочку расширенного поиска и разрешить пользователям выбирать набор разделов для поиска. Вариантов тьма на самом деле. Поэтому стартовое ограничение несколько непонятно...
Спустя 11 минут, 7 секунд (3.03.2012 - 00:00) siptik написал(а):
vmunt
Пусть у нас на странице размещается 30 результатов поиска( постраничная навигация ). Если на каждую функция ставить лимит 10 то получается следущая ситуация:
в каждом разделе может быть разное количество подходящих ответов из бд.
например:
страница N1:
первая функция возвращает 10, вторая 10 , третья 10 - все кажется хорошо.
страница N2:
первая фуннкця 10, вторая 0, третья 10 итого на странице всего 20 строк
страница N3: первая 1 вторая 0 третья 10- итого 11 строк.
как это контролировать?
четвертая: первая 0, вторая0, третья 10(и третей функции хватит строк еще на 10 страниц).
+Страница с товаром формируется десятком заросов и сложными вычислениями.
очень накладный поиск будет. когда страниц 100 на сайте, будет норм, а когда 3000 страниц...
Пусть у нас на странице размещается 30 результатов поиска( постраничная навигация ). Если на каждую функция ставить лимит 10 то получается следущая ситуация:
в каждом разделе может быть разное количество подходящих ответов из бд.
например:
страница N1:
первая функция возвращает 10, вторая 10 , третья 10 - все кажется хорошо.
страница N2:
первая фуннкця 10, вторая 0, третья 10 итого на странице всего 20 строк
страница N3: первая 1 вторая 0 третья 10- итого 11 строк.
как это контролировать?
четвертая: первая 0, вторая0, третья 10(и третей функции хватит строк еще на 10 страниц).
+Страница с товаром формируется десятком заросов и сложными вычислениями.
очень накладный поиск будет. когда страниц 100 на сайте, будет норм, а когда 3000 страниц...
Спустя 5 часов, 58 минут, 18 секунд (3.03.2012 - 05:59) Visman написал(а):
siptik, зачем делать какие-то ограничения по времени в 6 часов?
Есть в проверочной таблице урл измененной страницы - проиндексируй ее.
Нет - ну и нафига ее снова индексировать?
Есть в проверочной таблице урл измененной страницы - проиндексируй ее.
Нет - ну и нафига ее снова индексировать?
Спустя 7 часов, 21 минута, 32 секунды (3.03.2012 - 13:20) siptik написал(а):
Visman, да вы правы. буду так и делать.
еще вопрос:
вырезать теги при сохраниении, или вырезать при показе. Просто как я понимаю если вырезать теги при сохранении могут поломаться предложения, т.е. "<h2>Тема1</h2> Предложение 1." превратиться в "Тема1 предложение".
просто я хочу показывать пользователю строки, в которых найдены совпадения. Как поступаете вы?
еще вопрос:
вырезать теги при сохраниении, или вырезать при показе. Просто как я понимаю если вырезать теги при сохранении могут поломаться предложения, т.е. "<h2>Тема1</h2> Предложение 1." превратиться в "Тема1 предложение".
просто я хочу показывать пользователю строки, в которых найдены совпадения. Как поступаете вы?
Спустя 5 минут, 31 секунда (3.03.2012 - 13:26) Visman написал(а):
siptik, если теги не вырезать до сохранения не будет ли поиск давать неверный результат, если кто-то слово из тега введет?
Спустя 2 минуты, 20 секунд (3.03.2012 - 13:28) siptik написал(а):
Всмысле слово из тега?
Спустя 2 минуты, 30 секунд (3.03.2012 - 13:30) siptik написал(а):
В форму поиска тег?
Спустя 44 секунды (3.03.2012 - 13:31) Visman написал(а):
Например я введу слово right в поиск.
Если теги не убрать до, то в результате поиска я увижу все страницы, где есть выравнивание по правому краю, например такое
Если теги не убрать до, то в результате поиска я увижу все страницы, где есть выравнивание по правому краю, например такое
<td align="right">
Спустя 5 минут, 10 секунд (3.03.2012 - 13:36) siptik написал(а):
а как бороться с
Цитата (siptik @ 3.03.2012 - 10:20) |
"<h2>Тема1</h2> Предложение 1." превратиться в "Тема1 предложение". |
?
Спустя 1 минута, 54 секунды (3.03.2012 - 13:38) Visman написал(а):
siptik, а разве для поиска страшно такое превращение?
Спустя 19 минут, 46 секунд (3.03.2012 - 13:58) siptik написал(а):
я хочу показываться строку в которой найдено совпадение, как в Яндексе.
Сдесь еще хороший случай, а предствь что на странице есть таблица, с пятью столбцами . и 100 строками.
результат такой :
IDПример 1колонка 2колонка 3 IDПример 1 колонка 2колонка 3IDПример 1колонка 2колонка 3
получается что слова сливаются.
если таблица сделана с переносами строк то этого не заметно, а если в одну строку как я написал в примере, то получается такая лажа.
Сдесь еще хороший случай, а предствь что на странице есть таблица, с пятью столбцами . и 100 строками.
echo $a = strip_tags('<table border="1"><tr><td>ID</td><td>Пример 1</td><td>колонка 2</td><td>колонка 3</td></tr><tr> <td>ID</td><td>Пример 1</td> <td>колонка 2</td><td>колонка 3</td></tr><tr><td>ID</td><td>Пример 1</td><td>колонка 2</td><td>колонка 3</td></tr></table>');
результат такой :
IDПример 1колонка 2колонка 3 IDПример 1 колонка 2колонка 3IDПример 1колонка 2колонка 3
получается что слова сливаются.
если таблица сделана с переносами строк то этого не заметно, а если в одну строку как я написал в примере, то получается такая лажа.
Спустя 4 минуты, 48 секунд (3.03.2012 - 14:03) siptik написал(а):
Или может я просто загнался на пустяке?
Спустя 4 минуты, 45 секунд (3.03.2012 - 14:08) Visman написал(а):
А показывать собираешься в результат целые страницы из кэша или только кусок, там, где найденное слово есть?
Если кусок, то как разметку сохранить в его пределах. Может же с одной стороны тэг оказаться обрезанным при выводе.
Думаю надо потрошить какой-либо бесплатный поисковый движок на счет этих вопросов.
Если кусок, то как разметку сохранить в его пределах. Может же с одной стороны тэг оказаться обрезанным при выводе.
Думаю надо потрошить какой-либо бесплатный поисковый движок на счет этих вопросов.
Спустя 11 минут, 12 секунд (3.03.2012 - 14:19) siptik написал(а):
показывать буду просто строку в которой найдено совпадение
точно так же как и в гугле. Для вывода нужен чистый текст, так как поломается дизайн, если будут включены теги
точно так же как и в гугле. Для вывода нужен чистый текст, так как поломается дизайн, если будут включены теги
Спустя 9 часов, 42 минуты, 42 секунды (4.03.2012 - 00:01) vmunt написал(а):
Цитата (siptik @ 3.03.2012 - 02:00) |
Пусть у нас на странице размещается 30 результатов поиска( постраничная навигация ). Если на каждую функция ставить лимит 10 то получается следущая ситуация: в каждом разделе может быть разное количество подходящих ответов из бд. ... как это контролировать? ... очень накладный поиск будет. когда страниц 100 на сайте, будет норм, а когда 3000 страниц... |
1. Если тотальная сортировка нужна (например, по релевантности), то в любом случае как минимум один раз придётся вывести все результаты поиска в массив. Затем в случае большого количества элементов сохранить ID в таблицу результатов поиска для данного сеанса или вообще просто тупо внедрить ID-шники записей одной строкой в скрытый INPUT. Затем просто без поиска выбирать из списка ранее полученных ID-шников нужный диапазон (с 31-й по 60-ю позицию, например). Удалённые строки показывать каким-нибудь текстом типа "Данные удалены, обновить?"
2. Если общая сортировка не важна, то кто мешает передавать в функцию поиска диапазон выводимых строк и перед каждым поиском просто проверять, достиг размер массива найденных записей той же 60-й строки? Точно также можно сохранить количество найденных строк каждой поисковой функцией в любом удобном месте и в случае перехода на вторую страницу поиск номер 1 не делать (если уже известно, что он выдаёт 6 записей, которые целиком помещаются на 1-й странице, а нам надо в данный момент отобразить вторую)...
По поводу накладного поиска в 3000 страниц — не очень понял смысл фразы. Объясняю, почему:
А) самое ненакладное — вообще не производить поиск. Нет поиска — нет проблемы.
Б) Если в результатах поиска 3000 страниц (по 30 записей на страницу = 90'000 строк (а сколько вообще записей будет в базах данных в разных разделах? Просто любопытно)), то в любом случае хотя бы один раз поиск придётся произвести и хотя бы вывести на страничку сайта список выбора страниц, заканчивающийся цифрой 3000. Если не производить полный поиск, то как узнать, что результат поиска расползается на 3000 страниц? А как ненакладно провести и обработать результат поиска в 90тыс строк, лично я не знаю. Может, Вы знаете? Поделитесь мудростью?
В) Вариантов оптимизации нагрузки можно придумать море. Если, конечно, поиск нужен. После проведения первых поисковых запросов уже можно будет собрать статистику по запросам и переходам, и лучше понять, что ищут пользователи, и на что стоит заморачиваться (предупреждения, подсказки, дополнительные уточнения запроса, выбор категорий, прочее), а на что просто забить.
Г) Ну и когда инструментарий поиска такой «гибкий», что пользователь не сможет детализировать запрос и сократить количество результатов поиска хотя бы до трёх страниц (реально ли найти нужную информацию на 3 тысячах страниц несортированного вывода результатов, для меня лично ответ на этот вопрос может быть только один), то нафиг вообще тогда такой поиск нужен? Для галочки?
P.S.: По поводу тегов: искать в любом случае надо будет отдельные слова
select список_полей from таблица where поле like '%слово_1%' and поле like '%слово_2%'Причём если уж совсем по-правильному всё делать, то с учётом всех словоформ. А при таком подходе пофиг, есть в тексте, в котором производится поиск, теги, или нет. Сложность будут представлять только проставленные в словах удар́ения (они разрывают слово). У себя это, видимо, буду решать дополнительным скрытым где-нибудь списком слов с проставленными ударениями (либо общим, либо приклеенным к каждой статье, не решил ещё).
Спустя 51 минута, 40 секунд (4.03.2012 - 00:53) siptik написал(а):
Цитата (vmunt @ 3.03.2012 - 21:01) |
1. Если тотальная сортировка нужна (например, по релевантности), то в любом случае как минимум один раз придётся вывести все результаты поиска в массив. |
зачем сразу все в массив? дестки мегобайт в массив?
Цитата (vmunt @ 3.03.2012 - 21:01) |
(по 30 записей на страницу = 90'000 строк |
не понял почему 90'000. 3000 /30 = 1000
Цитата (vmunt @ 3.03.2012 - 21:01) |
(а сколько вообще записей будет в базах данных в разных разделах? Просто любопытно), |
будет туристический портал( не загран путешествий, а именно по Беларуси, реки, озера и всякая остальная хрень): форум , статьи, интернет магазин(каталог, с арендой площадки),новости и всякая другая хрень. я думамаю за пару месяцев страниц будет намного больше, чем три тысячи.
Цитата (vmunt @ 3.03.2012 - 21:01) |
Если не производить полный поиск, то как узнать, что результат поиска расползается на 3000 страниц? |
он производится будет. Будет прощитываться количество строк.
но так как портал будет пополняться каждый день новым контентом, не вижу смысла занесения в базу результатов или статистики, т.к. она будет меняться в зависимости от посещаемости и сезона.
Цитата (vmunt @ 3.03.2012 - 21:01) |
P.S.: По поводу тегов: искать в любом случае надо будет отдельные слова select список_полей from таблица where поле like '%слово_1%' and поле like '%слово_2%' |
а тут разве будет релевантность?
Цитата (vmunt @ 3.03.2012 - 21:01) |
Причём если уж совсем по-правильному всё делать, то с учётом всех словоформ. |
может подскажете какую библиотеку использовать? желательно чтобы небыло большой нагрузки на поиски этих слов?
Цитата (vmunt @ 3.03.2012 - 21:01) |
А при таком подходе пофиг, есть в тексте, в котором производится поиск, теги, или нет. |
!!!
Цитата (Visman @ 3.03.2012 - 10:31) |
Например я введу слово right в поиск. Если теги не убрать до, то в результате поиска я увижу все страницы, где есть выравнивание по правому краю, например такое <td align="right"> |
.
Спустя 3 дня, 6 секунд (7.03.2012 - 00:53) vmunt написал(а):
Цитата (siptik @ 4.03.2012 - 02:53) | ||
зачем сразу все в массив? дестки мегобайт в массив? |
Да без проблем! Анализируйте предварительный размер выборки поискового запроса, в случае большой выборки перенаправляйте выборку не в массив, а в промежуточную таблицу, по критерию сортировки создавайте дополнительное поле или индекс (при сортировке через релевантность придётся дополнительно поле коэффициента релевантности вводить, просчитывать и заполнять его), идентифицируйте пользователя по сессиям или кукам для доступа именно к его сохранённому поисковому запросу, ну и очистка таблицы поиска от устаревших поисковых запросов по истечении некоторого времени... Вперёд! Дерзайте! Получится просто супер! Этим можно будет гордиться! Честно!...
Цитата (siptik @ 4.03.2012 - 02:53) | ||
не понял почему 90'000. 3000 /30 = 1000 |
При трёх тысячах страниц результата с 30 записями на каждой странице общее количество записей считается умножением 3000 на 30, а не делением. Меня лично учили так...
Цитата (siptik @ 4.03.2012 - 02:53) | ||||
будет туристический портал( не загран путешествий, а именно по Беларуси, реки, озера и всякая остальная хрень): форум , статьи, интернет магазин(каталог, с арендой площадки),новости и всякая другая хрень. я думамаю за пару месяцев страниц будет намного больше, чем три тысячи.
он производится будет. Будет прощитываться количество строк. но так как портал будет пополняться каждый день новым контентом, не вижу смысла занесения в базу результатов или статистики, т.к. она будет меняться в зависимости от посещаемости и сезона. |
Вы количество страниц или записей в базах данных с количеством строк в поисковом запросе не путаете, случайно?
Цитата (siptik @ 4.03.2012 - 02:53) | ||
а тут разве будет релевантность? |
Вы уверены, что правильно понимаете термин «релевантность»?
Цитата (siptik @ 4.03.2012 - 02:53) | ||
может подскажете какую библиотеку использовать? желательно чтобы небыло большой нагрузки на поиски этих слов? |
Сам ещё не делал, но подскажу: тут про это есть. Причём это можно прикрутить уже вторым этапом, например. А про небольшую нагрузку при поиске с учётом словоформ — шутите, да?...
Цитата (siptik @ 4.03.2012 - 02:53) | ||||
!!!
. |
Туристы из Белоруссии точно будут искать на туристическом портале слово right?! Блин, продвинутые туристы в Белоруссии! Снимаю шляпу!
Лично я бы не заморачивался, конечно. Если туристы идут на туристический портал для того, чтобы смотреть правильную HTML-вёрстку, нехай себе смотрят. Вывод в htmlentities() заключить — и пусть получают то, что спрашивают...
Ну а уж если для продвинутых туристов писать продвинутый поиск, то почему бы не написать к этому поиску семантический анализатор поискового запроса (с выкусыванием из запроса того, что, по мнению семантического анализатора, турист не должен был бы писать в поисковом запросе, например, комбинаций английских буковок, по последовательностям совпадающих с тегами и стилями)? Гугл вообще семантику для всех языков на планете написал, а тут делов-то — один белорусский! Ну два на худой конец. Действуйте! Семантику можно даже третьим этапом сделать. Вааще круто получится! Если сделать (или хотя бы начать), конечно...
Лично я бы не заморачивался, конечно. Если туристы идут на туристический портал для того, чтобы смотреть правильную HTML-вёрстку, нехай себе смотрят. Вывод в htmlentities() заключить — и пусть получают то, что спрашивают...
Ну а уж если для продвинутых туристов писать продвинутый поиск, то почему бы не написать к этому поиску семантический анализатор поискового запроса (с выкусыванием из запроса того, что, по мнению семантического анализатора, турист не должен был бы писать в поисковом запросе, например, комбинаций английских буковок, по последовательностям совпадающих с тегами и стилями)? Гугл вообще семантику для всех языков на планете написал, а тут делов-то — один белорусский! Ну два на худой конец. Действуйте! Семантику можно даже третьим этапом сделать. Вааще круто получится! Если сделать (или хотя бы начать), конечно...
_____________
Я не разбираюсь в программировании, но говорю, что разбираюсь))