Pull to refresh

Используем поисковые движки для проверки корректности фраз

Reading time3 min
Views10K
По работе мне часто приходится вести переписку на английском, и в силу недолеченного перфекционизма, пользоваться для этого оффлайн/онлайн переводными/толковыми словарями. В целом они со своей работой справляются, пока дело не доходит до проверки правильности словосочетаний или целых фраз. Хочешь ввернуть что-нибудь из разряда продвинутого владения языком, но нет уверенности, что правильно помнишь (большой привет предлогам и фразовым глаголам).

Есть парочка ресурсов, для поиска фраз, но заточены они в основном под общеупотребимые словосочетания, пословицы и фразеологизмы на отдельно взятом языке. К тому же не известно пользуются ли люди искомой фразой или употребив её вы поставите в тупик даже носителя языка.
Читать дальше →
Total votes 19: ↑15 and ↓4+11
Comments11

Полнотекстовый поиск в Couchbase Server

Reading time7 min
Views2.6K
Дмитрий Калугин-Балашов большую часть своей жизни писал поиск: с 2011 года в компании Mail.ru был поиск по почте, затем был небольшой перерыв из-за работы в США, а сейчас это — работа над поиском в Couchbase. Одна из первых вещей, которую Дмитрий понял, работая в США — не всегда покупают самое эффективное решение. Иногда покупают то, где клиент будет иметь меньше проблем.

Поэтому ещё в 2013 году Дмитрий написал движок поиска для почтовых ящиков Mail.ru и рассказал об этом в том же году на конференции HighLoad и в статье на Хабре. А на HighLoad 2019 показал, как устроен полнотекстовый поиск в Couchbase Server, и сегодня мы предлагаем расшифровку его доклада.


Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments0

Одномерный поиск образца с использованием дискретного преобразования Фурье

Reading time4 min
Views4.2K

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

Потому занялся дополнительным поиском готовых реализаций, но к сожалению не смотря на обилие упоминаний идеи 1974 года, реализаций алгоритма, даже на законодателе моды в вычислительной математике Фортране я не обнаружил. В семинарах и лекциях да и в диссертациях описание не блистало целостностью, потому собрав с десяток статей и обсуждений в кучу появилось желание написать статью для тех кто простейшую реализацию поиска подстроки хочет "подержать в руках".

Фурье-вычисления для сравнения изображений
Total votes 22: ↑20 and ↓2+18
Comments24

Как мы делали свой поиск в Ozon: эволюция архитектуры от SQL до O2

Reading time16 min
Views25K

Привет, Хабр! Меня зовут Сергей, я руководитель команды поиска в Ozon. Сегодня я расскажу об эволюции наших поисковых систем: как всё начиналось более 20 лет назад с обычных SQL-запросов, как мы осваивали Sphinx и Elasticsearch и как сейчас наш собственный поисковый движок O2 на базе Apache Lucene выдерживает нагрузку в десятки тысяч RPS в сезон распродаж. Исторические хроники восстанавливались по воспоминаниям современников и представлены для полноты картины. Новейшая история описана на основе собственного опыта, поэтому подробностей будет на порядок больше. Поехали!

Читать далее
Total votes 56: ↑56 and ↓0+56
Comments25

Как я написал свою поисковую систему для быстрого поиска личной информации

Reading time6 min
Views7.9K

Предыстория

Все началось с того, что мне стало трудно находить нужную информацию, файлы. Чем больше файлов и папок у меня образовывалось, тем больше времени уходило на поиски нужного. Я понял, что каждый раз искать в бесконечных списках файлов и папок, особенно с условием вложенности это не вариант для больших объемов данных.

Что касается поиска по названию файла, то количество символов, указанных в названии ограниченно и слова при поиске должны быть в строго определенной последовательности. Тем более, если система индексирует другие, не нужные для поиска файла (системные файлы, файлы проектов), то поиск выдает много "мусора".

Поиск по содержанию файла даёт не самый релевантный результат. Может выдать бесполезные результаты с содержанием содержащие ключевые слова, но не относящиеся к тому, что действительно необходимо найти.

Более того по содержанию можно искать только текстовые файлы.

Структура содержания информации

Структура папок представляется собой в виде дерева. Мне это не нравится, потому что каждая папка может содержать только определенные файлы, если не учитывать копирование и ссылки.

Так же это можно представить с примером из реальной жизни, для того, чтобы найти зелёное свежее яблоко сорт "девственный". Необходимо найти отдел с фруктами, затем отдел с яблоками, затем ищем зеленные, затем сорт, ну там ещё их на свежие, не свежие фасуют в этом воображаемом примере и наконец найти нужное apple.

Усложняется ещё все и тем, что я не помню, есть ли там вообще яблоки, и если есть, то хранятся ли они в отделе фрукты или там продаются.

Читать далее
Total votes 4: ↑4 and ↓0+4
Comments28

Основы полнотекстового поиска в ElasticSearch. Часть первая

Level of difficultyMedium
Reading time5 min
Views15K

Привет! Меня зовут Глеб, я разработчик команды продукта «Сервис персонализации» в SM Lab. В цикле из трех постов я расскажу про основы полнотекстового поиска в Elasticsearch.

Данный цикл статей предназначен для всех, но будет особенно актуальным для тех читателей, кто только начинает свое знакомство с Elasticsearch. Я надеюсь, каждый из вас найдет что-то полезное для себя.

В первой части обсудим самые базовые понятия Elasticsearch. Во второй части разберем механизмы анализа текста и полнотекстового поиска. В заключительной части взглянем на стандартную модель ранжирования документов в Elasticsearch.

Итак, начнём с самых базовых понятий.

Читать далее
Total votes 23: ↑22 and ↓1+21
Comments1

Основы полнотекстового поиска в ElasticSearch. Часть вторая

Level of difficultyMedium
Reading time9 min
Views12K

Это вторая статья из цикла. В первой части я рассказывал про самые базовые понятия Elasticsearch. В этом же посте разберем устройство анализа текста и немного пощупаем полнотекстовый поиск.

Несколько слов про анализ текста

Анализ текста — процесс преобразования оригинального текста в структурированный формат, оптимизированный под эффективное хранение и быстрый поиск.

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

Читать далее
Total votes 26: ↑26 and ↓0+26
Comments0

Основы полнотекстового поиска в ElasticSearch. Часть третья

Level of difficultyMedium
Reading time4 min
Views4.9K

Это третья и заключительная статья из цикла, в которой рассмотрим стандартную модель ранжирования документов в Elasticsearch.

После того как определено множество документов, которые удовлетворяют параметрам полнотекстового запроса, Elasticsearch рассчитывает метрику релевантности для каждого найденного документа. По значению метрики набор документов сортируется и отдается потребителю.

В Elasticsearch существует несколько моделей ранжирования документов. По умолчанию используется Okapi BM25.

Читать далее
Total votes 16: ↑16 and ↓0+16
Comments1

Googlим бесплатно (и Яндексим): open-source решение с API

Level of difficultyEasy
Reading time6 min
Views3.8K

Бесплатно? Конечно же никто у вас деньги за "пойти в гугл" не возьмет... А что если попытаться автоматизировать сей процесс? Вот тут то возникают проблемы и чернозём для бизнесов.

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

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

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments0

Поиск в будущем

Level of difficultyMedium
Reading time6 min
Views1.3K

Привычный поиск, вроде Google, работает сугубо в прошлом. То есть любые результаты, которые вы можете увидеть - это то, что уже произошло. Кроме того, есть ещё дополнительные временные издержки на индексирование: дни или даже недели. Неплохо для исторических справок, но всегда слишком поздно для важных новостей.

Есть и другой путь - "перспективный" поиск. Суть его в том, чтобы получить результат в будущем. Лучше всего подходит для наблюдения за СМИ, поиска работы и других типов выгодных предложений.

Читать далее
Total votes 5: ↑5.5 and ↓-0.5+6
Comments3

Wolframalpha + Wikipedia = Galois/Wiki

Reading time2 min
Views993
Представьте себе Maple, Maxima или Mathematica, в которой правила работы являются энциклопедическими статьями, и, наоборот, энциклопедию, пополняя которую, вы улучшаете работу системы компьютерной алгебры. Эта идея лежит в основе Galois/Wiki (Галуа/Вики) — математической энциклопедии с интеллектуальным поиском.

image
Читать дальше →
Total votes 53: ↑50 and ↓3+47
Comments16

Отчет с конференции Lucene Revolution

Reading time5 min
Views3.9K
В начале октября мне удалось побывать на конференции Lucene Revolution, которая проходила в городе-герое Бостоне. Эта конференция была посвящена открытым поисковым технологиям Apache Lucene и Apache Solr. Мне кажется, что на хабре в частности и в рунете в целом этим технологиям уделяется незаслуженно мало внимания. Давайте исправим это упущение.

Читать дальше →
Total votes 41: ↑38 and ↓3+35
Comments10

Google обвиняет Bing в копировании его поисковой выдачи

Reading time1 min
Views2.2K


Можно сказать, что Bing извлекает урок из соревнования, но похоже, что он извлекает и чужие поисковые результаты. Представитель Google Амит Сингхал утверждает это, предоставив результаты своей любопытной (если не сказать «очень хитроумной») проверки. Вот как она работает: найди такой запрос, по которому ни в одном поисковике ничего не находится, вручную добавь в Google «страницу-приманку» в качестве результата для этого запроса, затем заставь около 20 сотрудников Google провести поиск и кликнуть по этому результату, используя Internet Explorer с включенными функцией Suggested Sites и тулбаром Bing. Через две недели, по словам Сингхала, достаточное количество (примерно 7-9) из 100 «приманок» повляются и в Bing. Включая результаты диких запросов вроде «mbrzxpgjys», «hiybbprqag» и «indoswiftjobinproduction».

Означает ли это, что Bing «жульничает», как утверждает Сингхал? Эксперимент проводился с включенными тулбаром Bing и/или функцией Suggested Search, а про них прямо сообщается, что они собирают данные для улучшения результатов поиска. И на популярные запросы, в отличие от редких, Bing выдает собственные результаты. Microsoft не ворует приватную информацию, но не является ли это нечестным приемом? Мы думаем, что над этим еще поломают копья.
Total votes 157: ↑133 and ↓24+109
Comments108

Использование библиотеки для полнотекстового поиска Xapian в Python

Reading time4 min
Views10K
Сегодня, в эпоху Web 2.0, когда контента на сайтах становится все больше и больше, перед разработчиками встает задача реализации полнотекстового поиска.

Вариантов немного:
  • использовать виджеты от разработчиков поисковых систем (Google, Яндекс, etc): легко внедрить, привычный для пользователя интерфейс, поддержка морфологии, исправление слов по словарю, возможно более быстрая индексация сайта поисковыми системами, но, как правило ограниченные возможности по настройке и неизбежное запаздывание индексации;
  • использовать встроенные в СУБД средства (например FULLTEXT-индекс для MySQL): достаточно легко внедрить, актуальный поисковый индекс, полный контроль над настройкой и внешним видом, но, чаще всего очень низкая производительность на больших объемах данных, отсутствие учета морфологии, либо, в худшем случае, полное отсутствие подобных средств в СУБД;
  • использовать отдельную библиотеку/систему полнотекствого поиска.

Третий вариант кажется самым лучшим, ведь он сочетает достоинства двух других вариантов. Правда и здесь не обошлось без недостатков — библиотека требует установки, иногда даже запуска демона (например Sphinx), что может быть неприемлемо.

Решений существует масса, у каждого есть свои достоинства и недостатки. Я бы хотел подробнее остановиться на относительно малоизвестной библиотеке Xapian.
Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments19

[Перевод] Теперь поиск Twitter ещё в 3 раза быстрее

Reading time6 min
Views3.1K
Мне всегда был интересен Ruby-on-Rails (RoR) и Twitter как яркий представитель платформы на этом framework. 6 апреля этого года в блоге команды Twitter появилась запись о полной смене поисковой платформы с RoR на Java. Под катом перевод о том, как это было.

Я готов жить с этим!
Total votes 63: ↑53 and ↓10+43
Comments36