К вопросу о нормальном поиске
Была вот тема на сайте, по осени, вроде. У человека угнали а/м Тойота Краун. Кто найдет эту тему при помощи поиска? Какой запрос вы бы использовали? И как реально найти эту тему.
#196018
29.03.2009 - 21:35
maxp [196123]: Суть не в ссылке. Суть в запросе. Я хочу найти эту тему. Как это сделать?
#196166
30.03.2009 - 09:58
shum38 [196166]: Тут есть некоторая проблема, так как Гугль кое-что выкидывает из индекса.
Эту тему Яндекс находит.
Собственный поиск по сайту/форуму есть в планах, но не в самых ближайших.
Эту тему Яндекс находит.
Собственный поиск по сайту/форуму есть в планах, но не в самых ближайших.
#196206
30.03.2009 - 11:29
maxp [196206]: Помочь? Это ведь извращение - из базы выкидывать в html, чтобы проиндексировал гугль, чтобы обратиться к нему с запросом, чтобы потом выдать в своем же дизайне результат. При этом непонятно, проиндексировал - не проиндексировал. Дайте кусочек базы - накидаю php, а вы уж потом посмотрите, поравите, внедрите.
#196217
30.03.2009 - 11:57
shum38 [196217]: Вы, видимо, не совсем в курсе, что такое полнотекстовый поиск по приличной базе.
Сразу хочу заметить, что просто SELECT ... LIKE ... для него не достаточно - и ищет плохо, и десяток одновременных запросов могут легко поставить диск раком.
Надо что-то, что может делать полнотекстовый индекс с учетом словоформ и других особенностей. Смотрю в этом плане на встроенный tsearch или на Sphinx, но повторюсь - это сейчас не первоочередная задача.
А Гугль всё-равно нас уже индексирует почему бы им не попользоваться.
Сразу хочу заметить, что просто SELECT ... LIKE ... для него не достаточно - и ищет плохо, и десяток одновременных запросов могут легко поставить диск раком.
Надо что-то, что может делать полнотекстовый индекс с учетом словоформ и других особенностей. Смотрю в этом плане на встроенный tsearch или на Sphinx, но повторюсь - это сейчас не первоочередная задача.
А Гугль всё-равно нас уже индексирует почему бы им не попользоваться.
#196266
30.03.2009 - 12:59
maxp [196266]: А есть статистика по запросам? Сервер didicated? И что значит "диск раком" - вот про это я, действительно не в курсе.
TSearch мне понравился. Я, правда, никогда его не использовал для интенсивного полнотекстового поиска, но пробовал. То количество поисковых запросов, которое у меня было по сей день, не требовало ничего кроме sql-запросов к базе.
TSearch мне понравился. Я, правда, никогда его не использовал для интенсивного полнотекстового поиска, но пробовал. То количество поисковых запросов, которое у меня было по сей день, не требовало ничего кроме sql-запросов к базе.
#196273
30.03.2009 - 13:17
shum38 [196273]: Запросы вида ... like '%word%' или ... like '%word' невозможно проиндексировать. Это означает, что для поиска соответствий надо целиком прочитать все записи в табличке. Если табличка 50 мегабайт — ничего особо страшного, она в конечном итоге целиком ляжет кэшем в память и все тормоза будут только из-за интенсивной работы CPU. Если же табличка получится хотя бы порядка пары гигов (что для этого сайта вполне нормальная цифра), на каждый поиск табличка будет целиком читаться с диска.
Поскольку поиск по тексту имеет определённые особенности (никого не интересует поиск куска слова), в современных СУБД был добавлен специальный тип индекса fullsearch. Каждый текст разбивается на слова, создаётся псевдотаблица вида {слово, id_статьи}, строится индекс (хэш-таблица) по полю {слово}. Таким образом, можно быстро поискать статьи с определёнными словами.
Некоторые движки учитывают морфологию. В этом случае, в псевдотаблицу сохраняется не слово, как оно встречалось в тексте, а его "чистая" форма. И при поиске все искомые слова преобразуются к "чистой" форме.
У этого способа тоже есть недостатки. Встроенный в СУБД индекс не имеет никакого представления о структуре текста. Соответственно, не может учитывать вес слов, исключать не значимые куски текста, учитывать положение слов в тексте, мета-тэги и т.д. В связи с этим, поисковые движки вида Sphinx, mnogoSearch и т.д. самостоятельно эмулируют fulltext индекс, но с учётом всего вышесказанного. Этого вполне достаточно для большинства типовых поисковых задач.
Но если у вас на сайте даже всего терабайт текста, то эта технология тоже перестаёт справляться. Причина в том, что даже вот так хорошо проиндексированный текст будет содержать несколько миллиардов статей и несколько триллионов ссылок в полнотекстовом индексе. Размер таблички соответствий получится несколько терабайт. Но самое главное — учёт веса слов, значимости статьи в целом и т.д. требует очень много дополнительных ресурсов. Возникает вопрос распараллеливания поиска. Крупные поисковые машины распределяют эту большую таблицу соответствий на несколько машин. В ней хранятся лишь слова и ссылки на документы. Никакого веса и прочих данных о структуре. Каждый документ хранится _целиком_. Когда составлен список статей с нужными словами, начинается анализ полностью сохранённых в индексе документов на предмет соответствия запросу. Всё это тоже распределённо. Например, гугл утверждает, что в обработке одного запроса бывает одновременно задействовано до нескольких тысяч машин.
Поскольку поиск по тексту имеет определённые особенности (никого не интересует поиск куска слова), в современных СУБД был добавлен специальный тип индекса fullsearch. Каждый текст разбивается на слова, создаётся псевдотаблица вида {слово, id_статьи}, строится индекс (хэш-таблица) по полю {слово}. Таким образом, можно быстро поискать статьи с определёнными словами.
Некоторые движки учитывают морфологию. В этом случае, в псевдотаблицу сохраняется не слово, как оно встречалось в тексте, а его "чистая" форма. И при поиске все искомые слова преобразуются к "чистой" форме.
У этого способа тоже есть недостатки. Встроенный в СУБД индекс не имеет никакого представления о структуре текста. Соответственно, не может учитывать вес слов, исключать не значимые куски текста, учитывать положение слов в тексте, мета-тэги и т.д. В связи с этим, поисковые движки вида Sphinx, mnogoSearch и т.д. самостоятельно эмулируют fulltext индекс, но с учётом всего вышесказанного. Этого вполне достаточно для большинства типовых поисковых задач.
Но если у вас на сайте даже всего терабайт текста, то эта технология тоже перестаёт справляться. Причина в том, что даже вот так хорошо проиндексированный текст будет содержать несколько миллиардов статей и несколько триллионов ссылок в полнотекстовом индексе. Размер таблички соответствий получится несколько терабайт. Но самое главное — учёт веса слов, значимости статьи в целом и т.д. требует очень много дополнительных ресурсов. Возникает вопрос распараллеливания поиска. Крупные поисковые машины распределяют эту большую таблицу соответствий на несколько машин. В ней хранятся лишь слова и ссылки на документы. Никакого веса и прочих данных о структуре. Каждый документ хранится _целиком_. Когда составлен список статей с нужными словами, начинается анализ полностью сохранённых в индексе документов на предмет соответствия запросу. Всё это тоже распределённо. Например, гугл утверждает, что в обработке одного запроса бывает одновременно задействовано до нескольких тысяч машин.
#196324
30.03.2009 - 14:37
Все это понятно. :) Я знаком с огранизацией ft-индексов. Но вот про объемы, конечно, никогда не слышал. Полагаю, что база Ангары метров 400-500. Если баз делать несколько, например по годам?
#196368
30.03.2009 - 15:28
shum38 [196368]: Что изменит разделение по годам? Вопрос не в объёме, а в функциональности. У голого fulltext она минимальна.
#196377
30.03.2009 - 16:03
strayer [196377]: В принципе, все понятно. Но, та реализация, что есть сейчас, сильно уступает даже простому LIKE (если не брать во внимание объем базы). Я не могу выбрать параметры, которые значительно конкретизируют и уменьшат выдачу. Время, автор, раздел.
#196402
30.03.2009 - 17:11
shum38 [196402]: ... Зато доступна вся мощь синтаксиса запросов http://www.google.com/intl/ru/help/refinesearch.html :)
Но в целом согласен, иногда возникало желание исключить из поиска форум.
Но в целом согласен, иногда возникало желание исключить из поиска форум.
#196406
30.03.2009 - 17:16
shum38 [196273]: "диск раком" это значит, что у диска всего один тонарм, на котором стоят головки и если его попросить прочитать всю базу пять раз параллельно, то он только и будет делать, что позиционировать головки, а это самая долгая операция.
Иными словами пяток сёрчеров наживая на Ф5 смогут прогрузить тачку очень заметно.
Причем, даже взяв железяку в 4 раза мощнее и с винтом на 10к рпмов не особо-то от этого защитишься.
Понятно, что можно изобретать всякие костыли типа ограничение одновременного количества поисков или еще чего-либо в этом духе, но я сейчас не вижу смысла этим заниматься.
Иными словами пяток сёрчеров наживая на Ф5 смогут прогрузить тачку очень заметно.
Причем, даже взяв железяку в 4 раза мощнее и с винтом на 10к рпмов не особо-то от этого защитишься.
Понятно, что можно изобретать всякие костыли типа ограничение одновременного количества поисков или еще чего-либо в этом духе, но я сейчас не вижу смысла этим заниматься.
#196671
31.03.2009 - 02:12
Возможно, не совсем по теме... Но вопрос к администрации:
Не могу решить, к какому разделу форума, отнести тему, о "велоакустике". Наушники - надоели, да и не безопасно.
Подскажите , пожалуйста , раздел форума где создать подобную тему .
Не могу решить, к какому разделу форума, отнести тему, о "велоакустике". Наушники - надоели, да и не безопасно.
Подскажите , пожалуйста , раздел форума где создать подобную тему .
#209294
29.04.2009 - 00:27
Slav4ik [209294]: А чем раздел "Велосипед" не нравиться? Я тоже думал над подобным.
#209297
29.04.2009 - 00:40
Dizel [209297]: Блин, пока Макс не видит, скажу:
Там же в основном технические вопросы: электрика, электроника. Спортсмены не "взбунтуются" :) ?
Ну ты же в курсе про "Ночные покатушки"...
Там же в основном технические вопросы: электрика, электроника. Спортсмены не "взбунтуются" :) ?
Ну ты же в курсе про "Ночные покатушки"...
#209299
29.04.2009 - 00:44
Slav4ik [209299]: Поясняю: "Ночные покатушки" подразумевают именно покатушки, т. е. обсуждене передвижения на велосипеде, обсуждение электоники там не приветствуются, поскольку это специфичное обсуждение, для этого есть соответствующая тема, например "К вопросу об оптике на велосипеде". Озаглавить тему "Аккустика для велосипеда" и вести в ней рассуждения по заявленной теме тебе никто мешать не будет, при условии придерживания линии темы.
#209303
29.04.2009 - 00:56
Dizel [209303]: Ладно, воспользуюсь твоим советом.
P.S. Про "Ночные покатушки" и что в них должно входить, и не входить..., давай, уже, спор закончим. Каждый остаётся при своём мнении.
К администрации: если решите, что я здесь "намусорил", можете "подчистить".
P.S. Про "Ночные покатушки" и что в них должно входить, и не входить..., давай, уже, спор закончим. Каждый остаётся при своём мнении.
К администрации: если решите, что я здесь "намусорил", можете "подчистить".
#209304
29.04.2009 - 01:05
Slav4ik [209299]: Блин, пока Макс не видит, скажу - давайте только не будем держать меня за пугало и играть в партизанов :)
К администрации: если решите, что я здесь "намусорил", можете "подчистить". - вот спасибо-то.
Но лучше, все-таки, просто "не мусорить" - к поиску данный вопрос не имеет отношения.
Автору темы решать, к какому разделу она подходит лучше всего. В крайнем случае модераторы переместят её. Нет в этом ничего страшного или зазорного.
К администрации: если решите, что я здесь "намусорил", можете "подчистить". - вот спасибо-то.
Но лучше, все-таки, просто "не мусорить" - к поиску данный вопрос не имеет отношения.
Автору темы решать, к какому разделу она подходит лучше всего. В крайнем случае модераторы переместят её. Нет в этом ничего страшного или зазорного.
#209398
29.04.2009 - 11:12