Была вот тема на сайте, по осени, вроде. У человека угнали а/м Тойота Краун. Кто найдет эту тему при помощи поиска? Какой запрос вы бы использовали? И как реально найти эту тему.
maxp [196123]: Суть не в ссылке. Суть в запросе. Я хочу найти эту тему. Как это сделать?
shum38 [196166]: Тут есть некоторая проблема, так как Гугль кое-что выкидывает из индекса.
Эту тему Яндекс находит.
Собственный поиск по сайту/форуму есть в планах, но не в самых ближайших.
maxp [196206]: Помочь? Это ведь извращение - из базы выкидывать в html, чтобы проиндексировал гугль, чтобы обратиться к нему с запросом, чтобы потом выдать в своем же дизайне результат. При этом непонятно, проиндексировал - не проиндексировал. Дайте кусочек базы - накидаю php, а вы уж потом посмотрите, поравите, внедрите.
shum38 [196217]: Вы, видимо, не совсем в курсе, что такое полнотекстовый поиск по приличной базе.
Сразу хочу заметить, что просто SELECT ... LIKE ... для него не достаточно - и ищет плохо, и десяток одновременных запросов могут легко поставить диск раком.
Надо что-то, что может делать полнотекстовый индекс с учетом словоформ и других особенностей. Смотрю в этом плане на встроенный tsearch или на Sphinx, но повторюсь - это сейчас не первоочередная задача.
А Гугль всё-равно нас уже индексирует почему бы им не попользоваться.
maxp [196266]: А есть статистика по запросам? Сервер didicated? И что значит "диск раком" - вот про это я, действительно не в курсе.
TSearch мне понравился. Я, правда, никогда его не использовал для интенсивного полнотекстового поиска, но пробовал. То количество поисковых запросов, которое у меня было по сей день, не требовало ничего кроме sql-запросов к базе.
John Lepikhin
Иркутск - Москва
shum38 [196273]: Запросы вида ... like '%word%' или ... like '%word' невозможно проиндексировать. Это означает, что для поиска соответствий надо целиком прочитать все записи в табличке. Если табличка 50 мегабайт — ничего особо страшного, она в конечном итоге целиком ляжет кэшем в память и все тормоза будут только из-за интенсивной работы CPU. Если же табличка получится хотя бы порядка пары гигов (что для этого сайта вполне нормальная цифра), на каждый поиск табличка будет целиком читаться с диска.
Поскольку поиск по тексту имеет определённые особенности (никого не интересует поиск куска слова), в современных СУБД был добавлен специальный тип индекса fullsearch. Каждый текст разбивается на слова, создаётся псевдотаблица вида {слово, id_статьи}, строится индекс (хэш-таблица) по полю {слово}. Таким образом, можно быстро поискать статьи с определёнными словами.
Некоторые движки учитывают морфологию. В этом случае, в псевдотаблицу сохраняется не слово, как оно встречалось в тексте, а его "чистая" форма. И при поиске все искомые слова преобразуются к "чистой" форме.
У этого способа тоже есть недостатки. Встроенный в СУБД индекс не имеет никакого представления о структуре текста. Соответственно, не может учитывать вес слов, исключать не значимые куски текста, учитывать положение слов в тексте, мета-тэги и т.д. В связи с этим, поисковые движки вида Sphinx, mnogoSearch и т.д. самостоятельно эмулируют fulltext индекс, но с учётом всего вышесказанного. Этого вполне достаточно для большинства типовых поисковых задач.
Но если у вас на сайте даже всего терабайт текста, то эта технология тоже перестаёт справляться. Причина в том, что даже вот так хорошо проиндексированный текст будет содержать несколько миллиардов статей и несколько триллионов ссылок в полнотекстовом индексе. Размер таблички соответствий получится несколько терабайт. Но самое главное — учёт веса слов, значимости статьи в целом и т.д. требует очень много дополнительных ресурсов. Возникает вопрос распараллеливания поиска. Крупные поисковые машины распределяют эту большую таблицу соответствий на несколько машин. В ней хранятся лишь слова и ссылки на документы. Никакого веса и прочих данных о структуре. Каждый документ хранится _целиком_. Когда составлен список статей с нужными словами, начинается анализ полностью сохранённых в индексе документов на предмет соответствия запросу. Всё это тоже распределённо. Например, гугл утверждает, что в обработке одного запроса бывает одновременно задействовано до нескольких тысяч машин.
Все это понятно. :) Я знаком с огранизацией ft-индексов. Но вот про объемы, конечно, никогда не слышал. Полагаю, что база Ангары метров 400-500. Если баз делать несколько, например по годам?
John Lepikhin
Иркутск - Москва
shum38 [196368]: Что изменит разделение по годам? Вопрос не в объёме, а в функциональности. У голого fulltext она минимальна.
strayer [196377]: В принципе, все понятно. Но, та реализация, что есть сейчас, сильно уступает даже простому LIKE (если не брать во внимание объем базы). Я не могу выбрать параметры, которые значительно конкретизируют и уменьшат выдачу. Время, автор, раздел.
shum38 [196273]: "диск раком" это значит, что у диска всего один тонарм, на котором стоят головки и если его попросить прочитать всю базу пять раз параллельно, то он только и будет делать, что позиционировать головки, а это самая долгая операция.
Иными словами пяток сёрчеров наживая на Ф5 смогут прогрузить тачку очень заметно.
Причем, даже взяв железяку в 4 раза мощнее и с винтом на 10к рпмов не особо-то от этого защитишься.
Понятно, что можно изобретать всякие костыли типа ограничение одновременного количества поисков или еще чего-либо в этом духе, но я сейчас не вижу смысла этим заниматься.
Возможно, не совсем по теме... Но вопрос к администрации:
Не могу решить, к какому разделу форума, отнести тему, о "велоакустике". Наушники - надоели, да и не безопасно.
Подскажите , пожалуйста , раздел форума где создать подобную тему .
Иван Майоров
Иркуцкий Острог
Slav4ik [209294]: А чем раздел "Велосипед" не нравиться? Я тоже думал над подобным.
Dizel [209297]: Блин, пока Макс не видит, скажу:
Там же в основном технические вопросы: электрика, электроника. Спортсмены не "взбунтуются" :) ?
Ну ты же в курсе про "Ночные покатушки"...
Иван Майоров
Иркуцкий Острог
Slav4ik [209299]: Поясняю: "Ночные покатушки" подразумевают именно покатушки, т. е. обсуждене передвижения на велосипеде, обсуждение электоники там не приветствуются, поскольку это специфичное обсуждение, для этого есть соответствующая тема, например "К вопросу об оптике на велосипеде". Озаглавить тему "Аккустика для велосипеда" и вести в ней рассуждения по заявленной теме тебе никто мешать не будет, при условии придерживания линии темы.
Dizel [209303]: Ладно, воспользуюсь твоим советом.
P.S. Про "Ночные покатушки" и что в них должно входить, и не входить..., давай, уже, спор закончим. Каждый остаётся при своём мнении.
К администрации: если решите, что я здесь "намусорил", можете "подчистить".
Slav4ik [209299]: Блин, пока Макс не видит, скажу - давайте только не будем держать меня за пугало и играть в партизанов :)
К администрации: если решите, что я здесь "намусорил", можете "подчистить". - вот спасибо-то.
Но лучше, все-таки, просто "не мусорить" - к поиску данный вопрос не имеет отношения.
Автору темы решать, к какому разделу она подходит лучше всего. В крайнем случае модераторы переместят её. Нет в этом ничего страшного или зазорного.