в Иркутске 14:29, Апр. 18    
К вопросу о нормальном поиске
29.03.09 21:35
#196018
Alexandr Ivanischev
IKT
Была вот тема на сайте, по осени, вроде. У человека угнали а/м Тойота Краун. Кто найдет эту тему при помощи поиска? Какой запрос вы бы использовали? И как реально найти эту тему.
30.03.09 01:28
#196123
Максим Пензин
Иркутск
30.03.09 09:58
#196166
Alexandr Ivanischev
IKT
maxp [196123]: Суть не в ссылке. Суть в запросе. Я хочу найти эту тему. Как это сделать?
30.03.09 11:29
#196206
Максим Пензин
Иркутск
shum38 [196166]: Тут есть некоторая проблема, так как Гугль кое-что выкидывает из индекса.
Эту тему Яндекс находит.

Собственный поиск по сайту/форуму есть в планах, но не в самых ближайших.
30.03.09 11:57
#196217
Alexandr Ivanischev
IKT
maxp [196206]: Помочь? Это ведь извращение - из базы выкидывать в html, чтобы проиндексировал гугль, чтобы обратиться к нему с запросом, чтобы потом выдать в своем же дизайне результат. При этом непонятно, проиндексировал - не проиндексировал. Дайте кусочек базы - накидаю php, а вы уж потом посмотрите, поравите, внедрите.
30.03.09 12:59
#196266
Максим Пензин
Иркутск
shum38 [196217]: Вы, видимо, не совсем в курсе, что такое полнотекстовый поиск по приличной базе.

Сразу хочу заметить, что просто SELECT ... LIKE ... для него не достаточно - и ищет плохо, и десяток одновременных запросов могут легко поставить диск раком.

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

А Гугль всё-равно нас уже индексирует почему бы им не попользоваться.
30.03.09 13:17
#196273
Alexandr Ivanischev
IKT
maxp [196266]: А есть статистика по запросам? Сервер didicated? И что значит "диск раком" - вот про это я, действительно не в курсе.

TSearch мне понравился. Я, правда, никогда его не использовал для интенсивного полнотекстового поиска, но пробовал. То количество поисковых запросов, которое у меня было по сей день, не требовало ничего кроме sql-запросов к базе.
30.03.09 14:37
#196324
John Lepikhin
Иркутск - Москва
shum38 [196273]: Запросы вида ... like '%word%' или ... like '%word' невозможно проиндексировать. Это означает, что для поиска соответствий надо целиком прочитать все записи в табличке. Если табличка 50 мегабайт — ничего особо страшного, она в конечном итоге целиком ляжет кэшем в память и все тормоза будут только из-за интенсивной работы CPU. Если же табличка получится хотя бы порядка пары гигов (что для этого сайта вполне нормальная цифра), на каждый поиск табличка будет целиком читаться с диска.

Поскольку поиск по тексту имеет определённые особенности (никого не интересует поиск куска слова), в современных СУБД был добавлен специальный тип индекса fullsearch. Каждый текст разбивается на слова, создаётся псевдотаблица вида {слово, id_статьи}, строится индекс (хэш-таблица) по полю {слово}. Таким образом, можно быстро поискать статьи с определёнными словами.
Некоторые движки учитывают морфологию. В этом случае, в псевдотаблицу сохраняется не слово, как оно встречалось в тексте, а его "чистая" форма. И при поиске все искомые слова преобразуются к "чистой" форме.

У этого способа тоже есть недостатки. Встроенный в СУБД индекс не имеет никакого представления о структуре текста. Соответственно, не может учитывать вес слов, исключать не значимые куски текста, учитывать положение слов в тексте, мета-тэги и т.д. В связи с этим, поисковые движки вида Sphinx, mnogoSearch и т.д. самостоятельно эмулируют fulltext индекс, но с учётом всего вышесказанного. Этого вполне достаточно для большинства типовых поисковых задач.

Но если у вас на сайте даже всего терабайт текста, то эта технология тоже перестаёт справляться. Причина в том, что даже вот так хорошо проиндексированный текст будет содержать несколько миллиардов статей и несколько триллионов ссылок в полнотекстовом индексе. Размер таблички соответствий получится несколько терабайт. Но самое главное — учёт веса слов, значимости статьи в целом и т.д. требует очень много дополнительных ресурсов. Возникает вопрос распараллеливания поиска. Крупные поисковые машины распределяют эту большую таблицу соответствий на несколько машин. В ней хранятся лишь слова и ссылки на документы. Никакого веса и прочих данных о структуре. Каждый документ хранится _целиком_. Когда составлен список статей с нужными словами, начинается анализ полностью сохранённых в индексе документов на предмет соответствия запросу. Всё это тоже распределённо. Например, гугл утверждает, что в обработке одного запроса бывает одновременно задействовано до нескольких тысяч машин.
30.03.09 15:28
#196368
Alexandr Ivanischev
IKT
Все это понятно. :) Я знаком с огранизацией ft-индексов. Но вот про объемы, конечно, никогда не слышал. Полагаю, что база Ангары метров 400-500. Если баз делать несколько, например по годам?
30.03.09 16:03
#196377
John Lepikhin
Иркутск - Москва
shum38 [196368]: Что изменит разделение по годам? Вопрос не в объёме, а в функциональности. У голого fulltext она минимальна.
30.03.09 17:11
#196402
Alexandr Ivanischev
IKT
strayer [196377]: В принципе, все понятно. Но, та реализация, что есть сейчас, сильно уступает даже простому LIKE (если не брать во внимание объем базы). Я не могу выбрать параметры, которые значительно конкретизируют и уменьшат выдачу. Время, автор, раздел.
30.03.09 17:16
#196406
John Lepikhin
Иркутск - Москва
shum38 [196402]: ... Зато доступна вся мощь синтаксиса запросов http://www.google.com/intl/ru/help/refinesearch.html :)
Но в целом согласен, иногда возникало желание исключить из поиска форум.
31.03.09 02:12
#196671
Максим Пензин
Иркутск
shum38 [196273]: "диск раком" это значит, что у диска всего один тонарм, на котором стоят головки и если его попросить прочитать всю базу пять раз параллельно, то он только и будет делать, что позиционировать головки, а это самая долгая операция.
Иными словами пяток сёрчеров наживая на Ф5 смогут прогрузить тачку очень заметно.
Причем, даже взяв железяку в 4 раза мощнее и с винтом на 10к рпмов не особо-то от этого защитишься.

Понятно, что можно изобретать всякие костыли типа ограничение одновременного количества поисков или еще чего-либо в этом духе, но я сейчас не вижу смысла этим заниматься.
29.04.09 00:27
#209294
Викторович
3955
Возможно, не совсем по теме... Но вопрос к администрации:
Не могу решить, к какому разделу форума, отнести тему, о "велоакустике". Наушники - надоели, да и не безопасно.

Подскажите , пожалуйста , раздел форума где создать подобную тему .
29.04.09 00:40
#209297
Иван Майоров
Иркуцкий Острог
Slav4ik [209294]: А чем раздел "Велосипед" не нравиться? Я тоже думал над подобным.
29.04.09 00:44
#209299
Викторович
3955
Dizel [209297]: Блин, пока Макс не видит, скажу:

Там же в основном технические вопросы: электрика, электроника. Спортсмены не "взбунтуются" :) ?
Ну ты же в курсе про "Ночные покатушки"...
29.04.09 00:56
#209303
Иван Майоров
Иркуцкий Острог
Slav4ik [209299]: Поясняю: "Ночные покатушки" подразумевают именно покатушки, т. е. обсуждене передвижения на велосипеде, обсуждение электоники там не приветствуются, поскольку это специфичное обсуждение, для этого есть соответствующая тема, например "К вопросу об оптике на велосипеде". Озаглавить тему "Аккустика для велосипеда" и вести в ней рассуждения по заявленной теме тебе никто мешать не будет, при условии придерживания линии темы.
29.04.09 01:05
#209304
Викторович
3955
Dizel [209303]: Ладно, воспользуюсь твоим советом.

P.S. Про "Ночные покатушки" и что в них должно входить, и не входить..., давай, уже, спор закончим. Каждый остаётся при своём мнении.

К администрации: если решите, что я здесь "намусорил", можете "подчистить".
29.04.09 11:12
#209398
Максим Пензин
Иркутск
Slav4ik [209299]: Блин, пока Макс не видит, скажу - давайте только не будем держать меня за пугало и играть в партизанов :)

К администрации: если решите, что я здесь "намусорил", можете "подчистить". - вот спасибо-то.
Но лучше, все-таки, просто "не мусорить" - к поиску данный вопрос не имеет отношения.

Автору темы решать, к какому разделу она подходит лучше всего. В крайнем случае модераторы переместят её. Нет в этом ничего страшного или зазорного.
Все разделы | Топ-100 | Переход в раздел:
Сообщения могут добавлять только зарегистрированные пользователи.