Комментарии 57
НЛО прилетело и опубликовало эту надпись здесь
Может кто напишет, за что? :)
+3
НЛО прилетело и опубликовало эту надпись здесь
Вообще боюсь браться за решение подобных задач.
У текущих CMS движков поиск тоже обычно реализован на достаточно низком уровне, что удручает ситуацию.
У текущих CMS движков поиск тоже обычно реализован на достаточно низком уровне, что удручает ситуацию.
+1
Мне кажется, у вас лишнее слово в комментарии. 'удручает ситуацию' — звучит странно, без обид.
И да, присоединюсь — с поиском в большинстве цмс, особливо бесплатных — неахти.
И да, присоединюсь — с поиском в большинстве цмс, особливо бесплатных — неахти.
+1
Я бы посоветовал интересующимся качественным SQL-поиском посмотреть доклад Олега Бартунова «Полнотекстовый поиск в PostgreSQL» на РИТ2007
0
«полнота и точность и ранжирование»
Что-то тут не так, запятые надо
Что-то тут не так, запятые надо
0
Очень хорошо всё расписано, но как-то никаких новых мыслей так и не появилось. Google|Яндекс ищёт лучше, но имеют кучу проблем — по бритве Оккама это лучше статьи. Но я как понимаю, это только введение, а дальше нас ждёт более интересные статьи :).
+1
При использовании поиска средствами SQL доступно ранжирование только по простым критериям, таким как дата.
=====
Откуда просто дата? А как же match against? Или сортировка по сумме like'ов? :)
=====
Откуда просто дата? А как же match against? Или сортировка по сумме like'ов? :)
0
да лайками вроде бы как не выход. А что если будет очень-очень много записей в БД, а мы по ними лайками%). Это же тормоза будут и еще какие. Можно просто составить словарь из записей и оперировать релевантностью.
0
Поддерживаю, MATCH AGAINST вполне себе хорошо и быстро работает, релевантность очень даже релевантная получается в выдаче :)
0
>Нельзя задавать уточнения для поиска. Например, задать поиск только в одном подразделе сайта.
Ну вообще-то это только у Яндекса нельзя, у Гугла можно, так и называется — «уточнения» :)
Ну вообще-то это только у Яндекса нельзя, у Гугла можно, так и называется — «уточнения» :)
0
«Нельзя идеально встроить результаты поиска в дизайн сайта.»
xml.yandex.ru/
только для работы нужен отдельный айпи.
xml.yandex.ru/
только для работы нужен отдельный айпи.
+1
Например, «студент inurl:/News/?id=»
0
Нужно хорошо понимать, что стоит за api яндекса и других поисковиков. Никто не будет отдавать результаты поиска просто так, потому что имеются сложности монетизации. Поэтому Яндекс либо ограничивает количество разрешенных запросов в день, либо требует установки директа на поисковой выдаче, как в qip.ru & nigma.ru
0
в тайне под семью замками так же, как рецепт приготовления Кока-Колы
рецепт кока-колы открыли уж несколько месяцев как.
0
Бытует мнение, что хороший сайт должен иметь свой поиск. Вы заказчикам расскажите что поиск на сайте будет через яндекс :-) Их эта идея не вдохновит, уверяю вас.
Поиск часто бывает специализированным, т.е. с дополнительные параметрами, а вот про это вы не слова не сказали. И тут поисковикам делать нечего совершенно. А как правило именно такой поиск и бывает действительно нужен. Что же касается поисковых систем, то вы сначала должны как-то прийти на этот сайт, а вот это уже задача последних.
Вобщем, вы все правильно изложили, но только тогда когда у нас сайты состоят только из набора статических страниц или статей.
Поиск часто бывает специализированным, т.е. с дополнительные параметрами, а вот про это вы не слова не сказали. И тут поисковикам делать нечего совершенно. А как правило именно такой поиск и бывает действительно нужен. Что же касается поисковых систем, то вы сначала должны как-то прийти на этот сайт, а вот это уже задача последних.
Вобщем, вы все правильно изложили, но только тогда когда у нас сайты состоят только из набора статических страниц или статей.
+1
> # Нельзя задавать уточнения для поиска. Например, задать поиск только в одном подразделе сайта.
Невнимательно читаете, если я правильно понял ваш комментарий.
Невнимательно читаете, если я правильно понял ваш комментарий.
0
Да, не очень внимательно прочитал. Но тем неменее мысль остается — в большинетве случаев поиск или нужен с дополнительными параметрами или не нужен вообще ибо как вы правильно высказались он тутже прямиком из яндекса приводит туда куда нужно.
+1
Беда в том, что заказчик обычно воспринимает поиск, как дешевую фичу. Типа вообще почему она не идет бесплатно «до кучи»?
Все потому, что формально эта строчка есть во всех ЦМС и во всех шаблонах с тимплейт-монстра.
Некоторый относительно недорогой вариант дает использование Zend-Lucene (из фреймворка). Даже без стемминга результат вполне удовлетворяет заказчика (интерфейс для прикручивания русского стемминга есть, и видимо люди его прикручивают). Там конечно надо дописать пагинацию, например путем сохранения результатов поиска в сессии и постраничной выборки уже оттуда, т.к. готового механизма нет. Ну и обеспечить обновление индекса при работе с объектами каталога и пр.
Все потому, что формально эта строчка есть во всех ЦМС и во всех шаблонах с тимплейт-монстра.
Некоторый относительно недорогой вариант дает использование Zend-Lucene (из фреймворка). Даже без стемминга результат вполне удовлетворяет заказчика (интерфейс для прикручивания русского стемминга есть, и видимо люди его прикручивают). Там конечно надо дописать пагинацию, например путем сохранения результатов поиска в сессии и постраничной выборки уже оттуда, т.к. готового механизма нет. Ну и обеспечить обновление индекса при работе с объектами каталога и пр.
+1
Совершенно с Вами согласен. Заказчик зачастую не может понять сложности реализации функции поиска, как ему не обьясняй. В результате разработчику приходится либо делать говнопоиск (под стать бюджету), либо делать хороший поиск при неадекватном бюджете, либо вообще отказываться от этой затеи.
Как правило, разработчик выбирает вариант «говнопоиск».
Я же в будущем в таких случаях буду просто идти в отказ, ибо говнопоиск делать не могу, а хороший поиск при неадекватном бюджете — не хочу (один раз пробовал — себе дороже).
Как правило, разработчик выбирает вариант «говнопоиск».
Я же в будущем в таких случаях буду просто идти в отказ, ибо говнопоиск делать не могу, а хороший поиск при неадекватном бюджете — не хочу (один раз пробовал — себе дороже).
+1
Обычно дешевле выполнить запрос заново, чем сохранять его в сессию. Это связано с тем, что поиск по инвертированному индексу выполняется очень быстро, а существенное время уходит на генерацию сниппетов.
+1
всё верно — поиск по сайту, как это, может ни покажется странным — совсем нетривиальная задача — посмотрите на тот же livestreet.ru — у него встроен Sphinx, но ведь не у всех есть возможность договориться с хостером на его установку.
0
>«Нельзя идеально встроить результаты поиска в дизайн сайта.»
Никаких проблем, ещё 4 года назад использовал xml поиск от yandex, надо только написать свой xsl шаблон
xml.yandex.ru/
В Google тоже не дураки работают
www.google.com/sitesearch/#xml
Никаких проблем, ещё 4 года назад использовал xml поиск от yandex, надо только написать свой xsl шаблон
xml.yandex.ru/
В Google тоже не дураки работают
www.google.com/sitesearch/#xml
0
Выше автор уже ответил на в точности такой же коммент :)
0
Гугловский поиск можно полностью подогнать под свой дизайн, тут http://habrahabr.ru/blogs/google/54012/ написано как
0
Я даже по хабру ищу через расширенную форму яндекса — «найти на сайте»
0
ИМХО, нормальный поиск по сайту начинается с анализа слов, которые вводятся в строку поиска САЙТА.
Потом берется этот анализ и разработчик интерфейса получает в лоб, если люди не могут найти очевидное.
Что касается полнотекстового поиска, то, имхо, на сайте он лишний — более эффективный поиск будет по словарю.
От того, что в описаниях ноутбуков будет найдено слово директор или кг — едва ли станет легче.
Нужна возможность настраивать результаты поиска, вручную говоря, что при запросе фамилии директора показывать на первом месте страничку с БИО, а не то, что «полнотекстовый поиск» посчитает более релевантным.
Посмотрите, как на HP.com поиск реализован — с историями поиска и подсказками — вы искали принтер, ноутбук, картридж?
Есть очень серьезный поисковый продукт atomz.com/ — там очень многие функции, недоступные бесплатным гугля-формам, реализованы.
Потом берется этот анализ и разработчик интерфейса получает в лоб, если люди не могут найти очевидное.
Что касается полнотекстового поиска, то, имхо, на сайте он лишний — более эффективный поиск будет по словарю.
От того, что в описаниях ноутбуков будет найдено слово директор или кг — едва ли станет легче.
Нужна возможность настраивать результаты поиска, вручную говоря, что при запросе фамилии директора показывать на первом месте страничку с БИО, а не то, что «полнотекстовый поиск» посчитает более релевантным.
Посмотрите, как на HP.com поиск реализован — с историями поиска и подсказками — вы искали принтер, ноутбук, картридж?
Есть очень серьезный поисковый продукт atomz.com/ — там очень многие функции, недоступные бесплатным гугля-формам, реализованы.
+2
У меня нечто типа своей системы поиска с учетом морфологии и автообучением.
Методика проста.
Добавление в словарь:
1. Есть база с распарсеным словарём ханспел, по ней находится лексема («первая» словоформа ) добавляемого слова.
2. Если такого слова в ханспел-базе нет, спрашиваем у брата-яндекса все формы этого слова и добавляем в ханспел-базу (очень помогает при добавлении фамилий).
3. В итоге добавляем лексему (или просто слова если не нашли лексему) в поисковый индекс.
Поиск абсолютно также, у искомого слова ищем лексему, потом ищем её в индексе. Всё.
Есть еще одна ступень, но её сейчас редко применяю — исправление ошибок.
Пример — spravka.properm.ru/?search=%F6%FB%F0%EA
Вот здесь тот же поисковик, но без исправления ошибок — www.business-class.su/search.php?s=%EF%F0%EE%E2%E5%F0%EA%E0
Методика проста.
Добавление в словарь:
1. Есть база с распарсеным словарём ханспел, по ней находится лексема («первая» словоформа ) добавляемого слова.
2. Если такого слова в ханспел-базе нет, спрашиваем у брата-яндекса все формы этого слова и добавляем в ханспел-базу (очень помогает при добавлении фамилий).
3. В итоге добавляем лексему (или просто слова если не нашли лексему) в поисковый индекс.
Поиск абсолютно также, у искомого слова ищем лексему, потом ищем её в индексе. Всё.
Есть еще одна ступень, но её сейчас редко применяю — исправление ошибок.
Пример — spravka.properm.ru/?search=%F6%FB%F0%EA
Вот здесь тот же поисковик, но без исправления ошибок — www.business-class.su/search.php?s=%EF%F0%EE%E2%E5%F0%EA%E0
+1
Я когда то написал свой поиск, долго им гордился :-), все через поискового робота который перерывал весь сайт заходя снаружи по всем ссылкам что находил и складывал все в базу с меткой где нашел.
Сейчас я понял что это глупости и для моих проектов хорошо использовать гугл, как это свободно делают многие хорошие сайты.
Сейчас я понял что это глупости и для моих проектов хорошо использовать гугл, как это свободно делают многие хорошие сайты.
0
НЛО прилетело и опубликовало эту надпись здесь
Кстати в догонку к комментарию по использованию Zend Lucene.
Там есть возможность, которая не упомянута в документации — давать полям документа разный вес. Т.е. например если Вам надо, чтобы по слову Контакты находилась страница «Контакты», то надо добавить вес поле с заглавием страницы.
$titleField = Zend_Search_Lucene_Field::Unstored('title', strtolower($my_symfony_object->getTitle()));
$titleField->boost = 1.5;
$doc->addField($titleField);
вот отсюда:
www.nabble.com/Zend_Search_Lucene-field-boost--td9439937.html#a9441132
Там есть возможность, которая не упомянута в документации — давать полям документа разный вес. Т.е. например если Вам надо, чтобы по слову Контакты находилась страница «Контакты», то надо добавить вес поле с заглавием страницы.
$titleField = Zend_Search_Lucene_Field::Unstored('title', strtolower($my_symfony_object->getTitle()));
$titleField->boost = 1.5;
$doc->addField($titleField);
вот отсюда:
www.nabble.com/Zend_Search_Lucene-field-boost--td9439937.html#a9441132
0
Уже есть silver bullet — sphinxsearch.com, дропайте свои велосипеды с лайками.
0
Как инсайдер, обязан отметить quintura.ru. Ни в тексте, ни в коментах ее нет. Однако и с полнотой, и с точностью, и с ранжированием у нас все очень неплохо. И подогнать под дизайн сайта вполне умеем. И настроить выдачу на вашем сайте — настроим. И нужные страницы подложим. И весь инструментарий предоставим. Красота! + закладки «табы» для поиска в разных разделах одного сайта, или по разным сайтам одного издателя.
+1
а под MSsql 2008, есть стороние решения?
мы пользовались до сих пор SQL turbo (Imceda) пока их не купил майкрософт, но так и не применил технологию.
есть решения?
мы пользовались до сих пор SQL turbo (Imceda) пока их не купил майкрософт, но так и не применил технологию.
есть решения?
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Полнотекстовый поиск по сайту — бич современного интернета