Привет читатель. Этот небольшой вступительный пост о нашем проекте — поисковом сервисе GrabDuck. О том, что это такое, какие проблемы мы пытались решить и, что из всего этого получается.



Проще говоря, история проекта в поисках своих благодарных клиентов, которую мы постарались сделать не нудной и интересной. Получилось или нет — судить вам. Кого заинтересовало, просим под Cut.

Введение


Оффтопик 1, который при первом прочтении можно пропустить
Часто даваемые ответы

Да, мы знаем, что это гусь, а не утка. Так уж получилось, что, когда мы искали изображение для первой страницы, этот подозрительный гусь нам понравился больше всего, а «прошерстили» мы, поверьте, не один фото-банк. И потом, а кто сказал что должна быть именно утка? Да, это гусь и он наблюдает за тобой.

Нет, мы никак не связаны с проектом DuckDuckGo. Хотелось бы, но нет. Мы не DDG, мы GD. Вообще, какая-то мода пошла на альтернативных поисковых сервисах главными назначать уток, не избежали этого и мы. Хотя, когда придумывали название, даже в голову не приходило, что окажется похожими на что-то еще. Правда, правда!


Большинству из нас знакома проблема с сохранением закладок в браузере. Мы постоянно читаем что-то новое и откладываем то, что интересно, чтобы быстро найти позже.

Я тоже так поступал. Все, что было интересно, я сохранял в качестве закладок в Google Chrome. Когда закладок стало много, начался долгий процесс их классификации — так появилась папка «Программирование», в ней «java», а рядом поместились «php» и «javascript». Потом куча других технологий, которые так или иначе интересовали меня. Со временем разбираться во всем этом стало тяжело — стандартная функциональность не позволяет сделать много. Некоторые ссылки можно было отнести сразу к нескольким папкам, а иногда я просто забывал о старой классификации и делал новую по соседству.

Когда закладок стало совсем много и не было времени сортировать их сразу, я нашел выход — у меня появилась папка «Входящие». Я дал себе слово, что буду по пятницам расчищать ее и начал сваливал туда все, что находил. Однако и это не сработало, по пятницам всегда находилось что-то более интересное. Так и лежали большинство моих закладок во входящих (как-то раз считал — было их там где-то далеко за 400). Со временем поймал себя на том, что просто иду во входящие и открываю от туда то, что мне нужно и о чем помню. А то, о чем не помнил я просто не открывал, а искал заново в Google.

Так и родилась идея GrabDuck. А почему я не могу искать в своих закладках также, как мы это регулярно делаем в поисковых системах — задавая поисковые запросы. Ведь чаще всего я пытаюсь найти нужную мне статью потому что (1) я знаю о чем именно была статья (и следовательно, могу в общих чертах сформулировать поисковый запрос) и (2) точно помню, что нужная статья где-то была у меня (а может и не одна).

«Стоп», — сказал я себе — ведь я на работе занимаюсь именно этим — поиском. Знаю, как он устроен, есть практический опыт. И вот на тебе — сапожник без сапог.
Так начался наш GrabDuck.

О проекте


Оффтопик 2, который тоже можно пропустить
Немного банальностей (или продолжение ответов)

Нет, GrabDuck это не стартап. Устали от традиции называть все и вся громким словом — Стартап. Не хотим участвовать в этой бесконечной битве за инвестора. Хотим сделать хороший сервис, который будет приносить пользователям свою пользу.

Да, мы любим сервис и пользуемся им сами. Знаем, все так говорят, но мы правда пользуемся GD каждый день. Однажды, несколько месяцев назад, когда я показывал приятелю ранний прототип, он спросил: «а что будешь делать, если не пойдет?». «Не страшно, сервер не дорогой, буду платить и пользоваться сам», — ответил я. С тех пор пользуюсь.


Что такое GrabDuck и каким мы видим его?

GrabDuck — это сервис хранения закладок, где можно искать «как в Google». Основная идея сервиса, это позволить пользователю бросить документ в «копилку» и забыть — система поможет найти его, когда он будет необходим.

Поэтому GrabDuck, это прежде всего поиск. Хороший полноценный полнотекстовый поиск по всем материалам которые я сохранил (не только по заголовку, но и по всей статье). Поиск, пытающийся найти фразы поискового запроса с учетом лексики, а не просто набор слов, который ввел пользователь. Это поиск, который постоянно обучается, какие поисковые запросы я ввожу и какие документы открываю чаще всего и адаптируется к моим предпочтениям.

Кроме того, как «бесплатный» бонус, система предлагает свои рекомендации из статей других пользователей, которые могут быть также интересны мне, опять таки, исходя из моих запросов и предпочтений. И, если рекомендованная статья действительно интересная, я могу добавить эту статью к себе.

Что мы используем


Небольшой обзор с комментариями о том какие технологии и для чего мы используем.



Наш сервер это Apache Tomcat на котором работают несколько Java приложений. Мы постарались следовать принципам Microservices Architecture и вынесли разные части приложения в разные модули, которые общаются между собой. В принципе, сейчас нам достаточно одного сервера на все, но в будущем, когда потребуется, мы можем, например, развернуть дополнительный модуль, который занимается парсингом статей на второй машине, таким образом повысив мощность только одного компонента системы, не меняя всего остального.

В качестве front-end сервера мы используем Nginx. Долго выбирали между Apache и Nginx, в результате остановились на втором. Причины просты — для нас он оказался более легковесным и простым в настройке.

Для хранения и работы с данными используем связку MySQL + Solr. Этакий гибрид, где каждый компонент занимается тем, что ему удается лучше всего.

MySQL отвечает за целостность и хранение данных в нормализированном виде. Мы всегда можем собрать из нескольких таблиц всю необходимую информацию о документе — контент страницы, мета данные, у кого страница есть в закладках, персональную для каждого пользователя информацию, например такую, как теги. Один большущий минус этой системы — MySQL очень медленный и практически не предоставляет возможностей для полнотекстового поиска. Следует сказать, что вообще, с точки зрения поиска, все fulltext search решения, которые предоставляют сейчас современные SQL продукты, это, как правило, какие-то базовые возможности, с которыми очень трудно и местами практически невозможно сделать что-то годное.

Итого, для поиска MySQL был не очень хорош. Поэтому, когда необходимо найти что-то по запросу пользователя, вступает в работу второй компонент — Solr, который отвечает за поиск и агрегацию информации. Каждый документ из базы, при создании или изменении, отправляется в Solr и на его основе создается представление, которое и будет использоваться непосредственно для поиска.

Таким образом имеем все преимущества классической SQL базы данных объединенные с быстротой и мощью, которые нам дает NoSQL.

Как оно работает


Расмотрим, что происходит когда пользователь добавляет что-то в систему. Это может быть как один документ, добавляемый через расширение хрома, так и импорт большого количества закладок, суть не меняется и всегда данные проходят по одному и тому же алгоритму.



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

Теперь нам необходимо проверить, если данная статья уже находиться в базе данных. Если да, то сохранять ее нет необходимости и пользователь пожет «переиспользовать» существующую. Совпадение проверяем по Каноническому URL. Как пример, любая статья на хабре имеет как минимум 3 разных валидных URL: для google/yandex, для мобильного отображения и для десктопа. При этом канонический URL будет всегда один и тот же. Эта же схема позволяет избежать нам дублицирования информации, если пользователь например захочет импортировать несколько раз один и тот же файл с закладками.

Если ссылка не дублирующая, то следующий шаг, это определение языка документа. Это необходимо для двух вещей. Во-первых документ специальным образом адаптируется в поисковом индексе для поиска именно на данном языке (на настоящий момент мы поддерживаем русский и английский, на очереди немецкий). И второе, язык используется для фильтрации при рекомендациях. Например, если про пользователя известно, что он читает на английском и немецком языках, то рекомендации на русском показаны не будут, даже если по поисковому запросу есть какие-то документы на русском. Для определения языка используем библиотеку Language-detection. Большой минус, как библиотеки в частности, так и в целом наверное всех подходов по определению языка — качество резко падает при небольшом объеме текста, по нашим наблюдениям, для 100% результата, необходимо как минимум иметь 500 символов, после качество начинает хромать.

И последний шаг, на основе сохраненного документа, создается сущность в поисковом индексе Solr. С этого момента документ доступен как для прямого полнотекстового поиска так и для отображения в рекомендациях.

Где мы сейчас


MVP готов, появились первые пользователи. Когда чего-то ищут, мы дружно радуемся. Особо мотивирует, когда есть комментарии по делу. Хотим сказать особое спасибо одному из наших пользователей anton_slim — человек реально прошелся по сервису и выкатил список того, что непонятно и криво — поправили.

Сейчас мы занимаемся активным тестированием сервиса и поэтому приглашаем всех пробовать и делиться впечатлениями.

В блоге планируем писать на тему поиска: как мы используем технологии, с какими проблемами сталкиваемся и как их решаем, вообщем все что может быть вам интересно.

Подписывайтесь и давайте общаться.

Комментарии (60)


  1. maximw
    27.04.2015 11:59
    -1

    del


    1. maximw
      27.04.2015 12:04

      Класс идея. Попробую.
      Не сразу заметил дисклеймер про гуся.


      1. SternMore Автор
        27.04.2015 14:53

        Здорово, мотивирует! Будут комментарии — обязательно пишите.


  1. stcherenkov
    27.04.2015 12:06

    Правильно я понимаю, что если для прочтения страницы требуется аутентификация, то полнотекстовый поиск по ней работать не будет?


    1. SternMore Автор
      27.04.2015 14:40

      Полнотекстовый поиск будет, но по контенту, доступному публично по данному URL. Страница обрабатывается на сервере, которому аутентификация не доступна. Кроме того, не забывайте — страница может быть показана как рекомендация и мы не можем собирать персонализированные данные на клиенте и потом показывать их всем.


  1. moigagoo
    27.04.2015 12:31
    +2

    Полез экспортировать закладки из Хрома, а они, оказывается, сделали тот же ГрабДак у себя:

    Закладки в Хроме


    1. AndersonDunai
      27.04.2015 13:15
      +5

      Я расшифровал ваши вкладки!

      Шок!


      1. moigagoo
        27.04.2015 13:21
        +3

        :-D

        У вас названия роликов как будто настоящие, и ссылки как будто тоже, но они не соответствуют друг другу. Это какой-то хитрый план? :-)

        До чего я дошел, проверяю правильность ссылок на прон...


        1. achekalin
          27.04.2015 13:52
          +5

          Ничего, скоро Хром будет знать, что показать вам в закладках, даже если закладки не делались. «В это время дня вы хотите читать про Go», а в это — про «Yoga Teen...» (и, да, я открою вам эту страницу в анонимном режиме, как будто ничего не запоминаю!) )


    1. SternMore Автор
      27.04.2015 14:42
      +1

      Google — это страшная сила. Чего нет в Google, но что можем дополнительно предложить мы, это кроссбраузерность и рекомендации других материалов, которые фактически проверены другими пользователями на качество и подходят под то, что вы ищете.


  1. questor
    27.04.2015 12:54

    До эпохи поисковых машин очень были популярны каталоги ссылок. Похоже, история по спирали возвращается на круги своя: мы снова ищем избранные ссылки. Разве что — свои, а не отобранные редактором.


    1. SternMore Автор
      27.04.2015 14:44

      Наверное можно и так сказать, но мне больше видится, что мы плавно движемся от больших поисковых универсальных машин к какому-то более персонифицированному поиску. Много проектов появляется, которые ищут по закладкам, по лайкам, по сообщениям, тот же Slack вспомните.


  1. artem_kovardin
    27.04.2015 13:33

    Сервис гуд. Но мои 4.5Мб закладок импортнуть не смог :)


    1. SternMore Автор
      27.04.2015 14:45

      Артем, можете поподробней что получается? Где был затык? Закладки грузятся как один json файл на сервер. Получилось загрузить?


  1. jonni
    27.04.2015 13:43

    Пользователи, уже зарегистрированные и использующие сервис на момент завершения тестирования, >>>получать<<< преференции и дополнительные предложения от сервиса.

    grabduck.com/auth/register


    1. SternMore Автор
      27.04.2015 14:47

      По моему опечатки тут принято отправлять в личке, но все равно спасибо — поправим. :-)


      1. jonni
        27.04.2015 14:57

        Пардоньте. Я все еще новичок-с

        ;)


  1. trasser
    27.04.2015 13:46

    а для firefox расширение будет?


    1. SternMore Автор
      27.04.2015 14:51

      Конечно будет — в планах сделать для firefox, opera и safari. Сейчас мы на стадии MVP, руки пока просто не дошли.


  1. Koncopd
    27.04.2015 15:18

    >Так и родилась идея GrabDuck. А почему я не могу искать в своих закладках также, как мы это регулярно делаем в поисковых системах — задавая поисковые запросы.

    Ну эта проблема решается уже существующими сервисами, например, полнотекстовый поиск по сохраненным статьям есть в pinboard.in. Или вот еще — fetching.io, bookmarks.io, historio.us. Можно немало таких сервисов накопать по соотвествующему запросу в гугле.


    1. RomanYankovsky
      27.04.2015 16:21

      Evernote еще.


    1. SternMore Автор
      27.04.2015 17:13

      У нас другая концепция и доменная область. По тем документам, которые сейчас в системе, уже можно сказать, что у нас большой крен в ИТ. Это означает, что нам придется разбираться с тонкостями именно этого мира, чтобы показать качественные рекомендации. Как небольшой пример: необходимо понимать, какие синонимы мы можем использовать при выполнении поискового запроса. Например, если пользователь ищет что-то по javascript, то все что удовлетворяет слову js, тоже подходит. Или для показа рекомендаций необходимо возвращать не только документы, которые удовлетворяют запросу, но ограничивать их только теми технологиями, которые интересны пользователю. Тема обширна и одного комментария для того, чтобы дать полный ответ, тут недостаточно. Мы планировали освещать какие-то такие детали в следующих статьях. А так, да — все на что-то так или иначе похоже.


    1. gotch
      28.04.2015 15:12

      Вот это да, уже целая армия желающих поконкурировать diigo.


  1. maximw
    27.04.2015 16:36
    +1

    Позвольте пару замечаний:
    Зачем сделана регистрация через ФБ (и другие сервисы), если потом все равно надо вводить пароль?
    Ну и реквестирую плагин для Огнелиса, конечно.


    1. SternMore Автор
      27.04.2015 16:42

      Потому что, может сложиться ситуация, когда данный сервис (FB,VK,G+) не работает и вы не сможете воспользоваться им для захода на GD. В этом случае у вас всегда есть email / пароль, которые вы завели.

      ?Да, мы поняли, что плагин нужен скорее. Правда, посмотрим когда сможем сделать.


      1. maximw
        27.04.2015 16:44

        Вам конечно виднее. Но регистрируясь через ФБ, я рассчитываю не использовать пароль вообще. Не знаю, насколько это распространенный шаблон поведения среди пользователей, но может сделать таки регистрацию с паролем опциональной?


  1. Roy
    27.04.2015 20:03

    Уж не Diigo ли вы изобрели?


    1. SternMore Автор
      28.04.2015 17:30

      Думаю, что нет. Diigo — это social bookmarking, как и Delicious. Их специализация на социальности, подписках на что-то, фоловерах и прочем. Мы делаем копилку личного материала, который собирается для себя. Рекомендации, которые мы даем, они сугубо по тому запросу, который пользователь ищет и могут быть именно сейчас ему полезны для решения какой-то конкретной проблемы.

      Grabduck не поддерживает функцию: «Дай-ка почитаю, что там запостили сегодня по тегу javascript”, как Delicious.


  1. alikhil
    27.04.2015 20:57

    Было бы круто такую штуку к избранным статьям хабра прикрутить.


    1. SternMore Автор
      27.04.2015 22:21

      Ваша мысль опережает наши действия :-D
      У нас планах стоит синхронизация с избранным хабра и SO


  1. utkorose
    27.04.2015 22:02

    хабраэффект?


    1. SternMore Автор
      27.04.2015 22:20

      Ага, такой большой, что провайдер целиком завалился .
      Приносим свои извинения, говорят скоро должны починить. Провайдер contabo.de если кому интересно.


  1. SchrodingersCat
    27.04.2015 22:46

    Нет возможности проверить снова из-за хабраэффекта, но заметил вот что:
    — в поиске не ищет по имени домена, например, пытался найти «habrahabr», но никаких результатов не выдало,
    — нет возможности поменять пароль


    1. SchrodingersCat
      28.04.2015 11:01

      + по-моему, было бы удобней, если в поиске по умолчанию было выбрано «User only articles», а не «All articles»


      1. SternMore Автор
        04.05.2015 23:09

        По имени домена действительно не ищет. Изначально думали нужно нам это или нет. Остановились на том, что вроде самим не надо и решили «огородов не городить». Наверное все таки реализуем, но как фильтр.

        Прямой функции «поменять пароль» сейчас действительно нет. Пока можно пользоваться функцией «Забыл пароль», она позволяет сменить теккущий пароль, если есть доступ к email.

        Мы видим это наоборот — когда ищу что-то свое, всегда интересно посмотреть, что еще у кого-то есть на данную тему. Тем более, что если ничего путнего нет, то смотреть вроде как никто не заставляет. Как вариант, который понравиться всем, можем рассмотреть пользовательскую настройку — по умолчанию искать или нет по другим закладкам.

        Кстати, если пользуетесь Trello, то посмотрите здесь — мы стараемся аккумулировать весь «feedback» от пользователей.


  1. POLYX
    28.04.2015 01:22

    Извините конечно, но чем ваш проект от допустим instapaper отличается? Ну и вопрос — как вы собираетесь монетизировать? Еще из пожеланий хочется апп для iOS/android


    1. gotch
      28.04.2015 15:04

      А Instapaper где хранит кеш? На сервере, или локально? Отсутствие бессплатного полнотекстового поиска опечалило. :(


    1. SternMore Автор
      28.04.2015 17:46

      А чем он похож? Конкурент Instapaper, это getpocket или на худой конец evernote. Это все сервисы отложенного чтения. Мы не показываем контент, а только выполняем поиск и рекомендуем то, что нашли другие пользователи по этому запросу.

      Так вам для iOS или Android? ;-)

      Про ценовую политику. Ждали этот вопрос :-)
      Пока для нас несколько преждевременно. Монетизация будет — хотим чтобы сервис развивался и совершенствовался — поступление средств для этого самый лучший мотиватор. Будет абонентка. Какая именно, сейчас сложно сказать — будем равняться на то, что работает на рынке для подобных сервисов. Предложим на выбор несколько тарифных планов.


      1. POLYX
        28.04.2015 19:10

        Хотелось бы и iOS и Андроид, т.к. у меня как и у многих iPad и андроид телефон. Может конечно ето не было идеей, но мне например хочется оффлайн чтения самой статьи после того как я ее нашел допустим чтобы в метро почитат или если плохое соединение


  1. avalak
    28.04.2015 01:55

    По сути сервис даёт то же самое что и YaCy. Не проще ли использовать его?


    1. SternMore Автор
      28.04.2015 17:48

      Извините, но мы этого не видим. Мы знаем про этот проект — ничего общего.
      Он больше конкурент стандартному поиску от Google — альтернативный универсальный поисковик, как и DDG — для любителей уйти от всезнающего и наблюдающего за всем Google.
      Ребята молодцы, придумали интересное решение. Из минусов я бы назвал необходимость разворачивать свою локальную ноду — далеко не каждый будет это делать. Ну и с релевантностью поиска самого не до конца понятно.


      1. avalak
        28.04.2015 22:56

        YaCy же можно настроить по разному. Можно сделать личный поисковик по всем посещённым страницам и/или только по закладкам.

        > Поэтому GrabDuck, это прежде всего поиск. Хороший полноценный полнотекстовый поиск по всем материалам которые я сохранил (не только по заголовку, но и по всей статье).

        Грубо говоря в YaCy полнотекстовый поиск по закладкам, у вас полнотекстовый поиск по закладкам (плюс рекомендации от других пользователей. этого от YaCy в такой конфигурации не получить).


  1. DYm00n
    28.04.2015 06:42

    А чем данный сервис СУЩЕСТВЕННО отличается от знаменитого delicious?


    1. gotch
      28.04.2015 14:57

      Delicious не сохраняет страницы в свой собственный кеш? Если сайт закрылся, ваша закладка испортится.


      1. DYm00n
        28.04.2015 16:16

        Не знаю как у других людей, но у меня в делишесе сохранено около 2900 закладок и на компе, все руки не доходят загнать в делишес еще около 300 закладок. Так вот у меня там хранится то, что может пригодиться, а в эверноут я сохраняю всегда то, что нужно сохранить (мануал по настройке чего либо). За все время пользования делишесом было несколько раз, что сохраненная страница с сайта удалена, но тут кеш гугла не кто не отменял, да и в случае чего, по словам можно чтото похожее найти в нете


    1. SternMore Автор
      28.04.2015 17:51

      GrabDuck — сервис хранения закладок, где во главу угла поставлено: найди мне нужную ссылку/статью, даже если я помню о ней достаточно приблизительно или не помню вообще.

      Delicious это social bookmarking. Где основное — это смотреть что в тренде по каким-то интересующим меня областям и набивать свою коллекцию ссылок. Еще по-моему Delicious не позволяет искать по самим документам.


      1. DYm00n
        28.04.2015 18:29

        За 4 года пользования делишесом, я не разу не пользовался его социальной основой. Если память не изменяет, то года 2-3 назад, когда случился редизайн и сайт переехал на другой домен, была возможность искать по самим документам, как сейчас — не могу сказать (нет возможности проверить)


  1. fanat1k
    28.04.2015 12:20

    У вас описание как импортировать закладки из Chrome слегка устарело


    1. SternMore Автор
      28.04.2015 17:52

      Да, уже вчера поняли это. Спасибо, поправим.


  1. gotch
    28.04.2015 14:38

    Сравните себя с DIIGO.COM?
    Я пользуюсь несколько лет платной учеткой, причем недавно расценки значительно поднялись (не для старых пользователей, к счастью).

    Какая у вас будет ценовая политика?


    1. SternMore Автор
      28.04.2015 17:57

      Про Diigo я написал развернутый ответ выше в комментариях. Смысл делать еще один такой же Diigo, но заведомо хуже, не видим.

      У Grabduck другой путь и тот финальный продукт, который держим в голове, абсолютно не похож на сегодняшний Diigo.com, также как и на Delicious.

      По ценовой политике — уже тоже говорили. Если кратко, будет абонентка, т.к. приток средств за работу мотивирует больше всего. Сколько — будем исходить из того, что есть/принято на рынке.


      1. gotch
        29.04.2015 09:55

        Какие у вас на текущий момент отличия от diigo? Что есть у вас, чего нет у них?

        Первое отличие, которое я, к сожалению, обнаружил, это невозможность импорта моих 827 закладок. Такое ощущение, что сервис пытается их кешировать во время импорта.


        1. SternMore Автор
          29.04.2015 18:15

          Давайте еще раз. Я не вижу как мы похожи на Diigo, поэтому мне трудно сравнить его с GrabDuck. Из того, что я вижу навскидку, что есть на сервисе и что является его основной чертой — это обмен какой-то полезной инфой между пользователями. Наша концепция это быстро помочь пользователю найти решение его вопроса и порекомендовать какие-то другие материалы. У нас нет и не планируется отмечать что-то для других пользователей. Мы не планируем делать какие-то персонализированные (социальные) рекомендации по типу “Вася считает это вам поможет”. Diigo наверное хороший и удобный сервис, но к сожалению больше ничего о нем сказать не могу.

          По импорту, Михаил, что именно не получилось. Можно подробней? У других пользователей все работает нормально. Где произошел затык? На сервер получилось сохранить?


          1. gotch
            05.05.2015 11:30

            Зависал на этапе загрузки файла на сервер. Сейчас попробовал еще раз, все отлично отработало.

            Чем вы похожи на diigo?

            Оба сервиса:
            1. Сохраняют закладки
            2. Кешируют сохраненные страницы
            3. Обеспечивают полнотекстовый поиск по кешу
            4. На страницы можно назначить теги (а в diigo и «категорию») и искать по тегам

            Но diigo не позволяет искать по чужому кешу. Потому что в кеше запросто может оказаться
            — корпоративная информация
            — пароли
            — adult контент
            (готовы с этим побороться?)

            Вот и вся функциональность на этот момент, верно?


            1. gotch
              06.05.2015 09:16

              Хотел бы добавить про поиск. Честно говоря, он практически не работает. Я сравниваю результаты поиска diigo и grabduck, последний не находит и половины статей.


              1. SternMore Автор
                08.05.2015 16:21

                Не знаю, что на это сказать. Как-то вам не повезло. Мы сравнили оба сервиса — для нас GrabDuck возвращает более релевантные результаты.


            1. SternMore Автор
              08.05.2015 16:20

              Мы на GrabDuck концентрируем свои усилия на поиске. Давайте еще один раз пройдемся по тому, чем должен обладать хороший поиск и что уже сделано у нас или планируется в ближайшее время.

              1. Поиск должен возвращать не много результатов, а релевантные результаты. Поищите в поисковике по «spring security -tutorial», получите более 100 миллионов ответов. Будет кто-то проверять их все? Нет. Обычно дальше второй — третьей страницы редко кто заглядывает. Поэтому проблема — не найти все, проблема, это показать то что нужно. На GD мы старались найти грань между «много» и «вменяемые результаты». Получилось? Узнаем, когда соберем feedback от пользователей через какое-то время. Будут нарекания — расширим поиск в сторону «много», алгоритмы от этого не меняются, только параметры.

              2. Учет языка. Должно быть возможно искать, принимая во внимание синтаксис языка. Например, под запрос «красный стол» также дополнительно попадают все красные и красненькие столики и столешницы. Мы сейчас поддерживаем русский и английский. На очереди немецкий. Это не означает, что на французском искать нельзя, это означает только, что для французского поиск будет не такой гибкий. Большинство систем, в таком ключе, поддерживают только один язык — «американский».

              3. Должен выполняться поиск по всей фразе, а не по словам поискового запроса. Приведу пример с тем же красным столом. Если я ищу красный стол, то хочу видеть информацию именно про красный стол, а не про зеленый, который мне будет выдан только потому, что в документе дополнительно присутствует информация о красном одеяле. Опять, говоря про большинство систем, не специализирующихся на поиске, результат — это документы, где просто присутствуют все или хотя бы одно из слов запроса. Поверьте нам на слово, мы проводили анализ нескольких систем из доступных в opensourse, там именно так.

              4. Система должна поправлять очепятки, а не искать бездумно что попросили. Особо говорить здесь не о чем. Понятно и так, кажется, что система должна это делать так или иначе. Самый известный пример, это Google с его «Did you mean?» функциональностью.

              5. Система должна учитывать при поиске синонимы. Уже проходил этот пример в комментариях — если я ищу «javascript», я буду очень удивлен если документы только с «js» не будут мне показаны. Это происходит потому, что для меня javascript и js две взаимозаменяемые сущности. Но это не так с т.з. компьютерной системы. Чтобы быть в состоянии это делать, сервис должен быть либо большим, таким как google, тогда в компании просто есть ресурсы для того, чтобы качественно прорабатывать «все все, про все про все» или покрывать только небольшое количество доменных областей, о которых у команды есть знания. Построить здесь универсальный алгоритм, обрабатывающий «все и без усилия» невозможно.

              6. Было бы очень хорошо, если бы сервис сам мог классифицировать документы (проставлять теги, категории, помещать документ в нужную папочку). Прежде всего, есть какая-то общая классификация, например, если статья о javascript, то наверняка тег с таким же название подойдет. Как понять то, что статья именно о javascript, это другой большой вопрос. Кроме того, как дополнение, всегда можно посмотреть: «а что же там пользователь сам набивает для подобного материала», — и добавить классификацию в новые документы автоматически. Сейчас из того, что я знаю, это делает только google и evernote. Скоро будем и мы. :-)

              Все из вышеперечисленного возможно на diigo? Я в этом как-то очень сомневаюсь. И не потому что они плохие, просто, это не их конек.

              Про борьбу с корпоративной информацией.
              Не видим проблемы с показом чужой корпоративной информации и паролей. Все рекомендации, это публичный контент доступный каждому по публичному url. Парсинг осуществляется не на клиенте, а на сервере у которого нет и быть не может доступа к чему-то секретному или корпоративному.

              С Adult контентом готовы и будем бороться. Даже знаем, как это делается — в рекомендациях показывать не будем.

              Надеюсь, что ответил вам на все ваши вопросы и считаю дискуссию по данному вопросу с нашей стороны закрытой.
              Спасибо за ваше мнение.


              1. gotch
                25.05.2015 15:26

                Спасибо, будем наблюдать за развитием вашего сервиса


  1. PaulMaly
    28.04.2015 22:18

    Особой надобности именно в таком решении если честно не вижу. Проблему решаю расширением для хрома. Там поиск конечно не супер-пупер, но как правило все находится.

    Но все равно удачи вам!


    1. SternMore Автор
      29.04.2015 18:21

      Спасибо за комментарий и за то что посмотрели наш материал.
      Мы понимаем, что GrabDuck не панацея от всех бед, которая поможет каждому. Кому-то сервис подойдет, кому-то нет.