admin / 16.09.2018
We invite representatives of system vendors to contact us for updating and extending the system information,
and for displaying vendor-provided information such as key customers, competitive advantages and market metrics.
We invite representatives of 3rd party vendors to contact us for presenting information about their offerings here.
PostgreSQL is the DBMS of the Year 2017
2 January 2018, Paul Andlinger, Matthias Gelbmann
Elasticsearch moved into the top 10 most popular database management systems
3 July 2017, Matthias Gelbmann
MySQL, PostgreSQL and Redis are the winners of the March ranking
2 March 2016, Paul Andlinger
show all
The DB-Engines ranking includes now search engines
4 February 2013, Paul Andlinger
show all
150+ Customers Choose SearchBlox to Replace Their Google Search Appliance
15 June 2018, PR Newswire (press release)
Appel d’offres : ARCHITECTE ELASTICSEARCH HDFS
12 June 2018, la Nouvelle République
Could AI Help Reform Academic Publishing?
14 June 2018, Forbes
Service Management Group amplifies its text analytics technology to help brands turn qualitative feedback into …
14 June 2018, PR Newswire (press release)
SMG Announces New and Improved Text Analytics Technologies
15 June 2018, HR Technologist
provided by Google News
The unstoppable fashion force of Beyoncé- and five times she’s mastered the art of style messaging
7 June 2018, Telegraph.co.uk
Sixers take offense to Goran Dragic’s layup in final seconds of Game 2. Dragic: ‘I don’t care’
18 April 2018, Palm Beach Post (blog)
‘Real Puzzles’ Will Offer 100 ‘Monument Valley’ Style Perspective Puzzles on May 30th
3 May 2018, Touch Arcade
The Pirate Bay Alternatives- 10 Best Torrent Sites like TPB (2018)
21 March 2018, Techworm
Defamation via Google search case to be discussed by High Court
20 March 2018, ABC Online
provided by Google News
Программист Python (Django)
НТЦ Вулкан, Москва
PHP разработчик
Мамси, Москва
Linux администратор
Group-IB, Москва
Data Scientist (Cybersecurity)
Group-IB, Москва
Development Team Lead
Kaspersky Lab, Москва
Senior Software Engineer
Under Armour, Austin, TX
Database Administrator
Workbridge Associates, Arlington, VA
jobs by
Задача поиска по тексту предполагает работу со сложными индексами и большими объемами данных. Поэтому для ее решения образовалась целая группа отдельных инструментов.
Многие базы данных имеют встроенную возможность поиска по тексту, однако всегда это очень ограниченная реализация. В большинстве случаев следует использовать более подходящие технологии.
Содержание
Все технологии полнотекстового поиска работают по одному принципу.
На основе текстовых данных строится индекс, который способен очень быстро искать соответствия по ключевым словам.
Обычно сервис поиска состоит из двух компонент. Поисковик и индексатор. Индексатор получает текст на вход, делает обработку текста (вырезание окончаний, незначимых слов и т.п.) и сохраняет все в индексе. Устройство такого индекса позволяет проводить по нему очень быстрый поиск. Поисковик — интерфейс поиска по индексу — принимает от клиента запрос, обрабатывает фразу и ищет ее в индексе.
Существует несколько популярных технологий для реализации полнотекстового поиска в приложениях.
Супер простое решение, которое подойдет для большинства случаев. По умолчанию поддерживает английский и русский язык. Имеет интерфейс для индексирования таблиц MySQL. Чтобы начать использовать Sphinx достаточно установить его из пакетов, настроить источник данных и запустить индексатор в cron задачу.
Конфигурация делится на source и index для определения источника данных и параметров индекса:
После этого достаточно запустить индексатор в cron, например для переиндексации каждые 5 минут:
В таком режиме максимальная задержка до появления данных в поиске будет составлять 5 минут.
Sphinx поддерживает обычный MySQL протокол для поиска, поэтому чтобы найти в индексе какой-то текст достаточно подключиться к порту 9306 и отправить обычный MySQL запрос:
Например, в PHP:
При больших объемах можно использовать схему Delta индексов для ускорения индексации. Кроме этого, Sphinx поддерживает Real Time индексы, фильтрацию и сортировку результатов поиска и поиск по wildcard условиям.
Solr — не просто поисковый индекс, а еще и хранилище документов. Т.е. в отличие от Sphinx’a, документы сохраняются целиком и их не нужно дублировать в базу данных.
Решение Java-based, поэтому понадобится JVM и сам Solr. Из пакетов можно поставить все вместе:
apt-get install solr-jetty
Либо просто скачать Solr и запустить его:
wget http://apache.cp.if.ua/lucene/solr/5.3.1/solr-5.3.1.tgz tar -xvf solr-5.3.1.tgz cd solr-5.3.1 bin/solr start
После этого сервис станет доступен на порту 8983:
http://127.0.0.1:8983/
Solr работает по текстовому HTTP протоколу. Сразу после установки можно отправлять данные в индекс. Индекс — это что-то вроде таблицы в MySQL, для ее создания нужно выполнить команду:
bin/solr create -c shop
Чтобы добавить документ в индекс, достаточно отправить такой запрос.
curl http://localhost:8983/solr/shop/update -d ‘ [ {"id" : "1", "title_t" : "The Solr And Shit", "author_t" : "Den Golotyuk" } ]’
Теперь можно сделать выборку документа по ID:
curl http://localhost:8983/solr/shop/get?id=1
Чтобы стала доступной возможность поиска по индексу, необходимо запустить перестроение индекса:
curl http://localhost:8983/solr/shop/update?commit=true
После этого можно искать по тексту:
curl http://localhost:8983/solr/demo/query -d ‘q=author_t:Den’
Получим что-то типа этого:
Solr поддерживает масштабирование в кластер, поэтому это решение подойдет для очень больших объемов данных и нагрузок. Кроме обычного текстового поиска этот поисковик может находить неточные соответствия (например, при поиске слов с ошибками).
Elasticsearch — целая инфраструктура для работы с данными, в том числе полнотекстовым поиском. Построен на основе Apache Lucene.
Установка из кастомного репозитория Debian:
wget -qO — https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add — echo "deb http://packages.elastic.co/elasticsearch/1.4/debian stable main" | sudo tee -a /etc/apt/sources.list apt-get update && apt-get install elasticsearch update-rc.d elasticsearch defaults 95 10 /etc/init.d/elasticsearch restart
После запуска (может занять несколько секунд) нужно проверить доступность:
curl localhost:9200
Индексы (таблицы) создаются автоматически при индексации, а сам индексатор работает в режиме реального времени. Поэтому для добавления документа в индекс нужно сделать только один вызов:
curl -XPUT "http://localhost:9200/shop/products/1" -d’ { "title": "Elastic", "description": "Better than Solr" }’
Чтобы получить документ по id достаточно сделать такой вызов:
curl -XGET "http://localhost:9200/shop/products/1"
Для поиска документов по тексту:
curl -XPOST "http://localhost:9200/shop/products/_search" -d’ { "query": { "query_string": { "query": "Better" } } }’
Elastic имеет мега продвинутую систему хранения данных и протокол запросов. Поэтому во многих случаях его применяют, как движок для Ad-hoc запросов.
Для поиска по тексту следует использовать указанные инструменты, т.к. обычные базы данных весьма ограничены и неэффективны в этом вопросе. Короткая сводка поможет выбрать подходящее решение:
Программы индексирования и пауки поисковых движков – это исключительно мощные программы. Они просматривают сотни миллиардов web-страниц, анализируют контент всех страниц, а также способ связи этих страниц друг с другом. Затем они организуют всю полученную информацию в базы данных, которые в ответ на запрос пользователя могут выдать (в течение нескольких десятых секунды) высоко организованный набор результатов.
Это потрясающее достижение, но оно имеет свои ограничения. Программное обеспечение очень механистично, оно может понять только часть страницы (для большинства web-страниц). Паук поискового движка анализирует HTML-код web-страницы. Если вы хотите понять, как это делается, то сможете увидеть, воспользовавшись вашим браузером для просмотра исходного кода.
Два моментальных снимка экрана на рис. 2.15 показывают, как сделать это в браузере FireFox (левый рисунок) и в браузере Internet Explorer (правый рисунок).
Рис. 2.15.
Просмотр исходного кода в вашем браузере
При просмотре исходного кода вы видите точный код web-сайта, который web-сервер отправил в ваш браузер. Именно это и видит паук поискового движка (поисковый движок видит также и HTTP-заголовки данной страницы). Паук игнорирует многое из того, что содержится в коде. Например, поисковые движки в основном игнорируют такой код, который показан на рис. 2.16 (поскольку он не имеет отношения к содержимому web-страницы).
Рис. 2.16. Пример исходного кода web-страницы
Паук поискового движка больше всего интересуется той информацией, которая содержится в HTML-тексте страницы. На рис. 2.17 показан пример HTML-текста для web-страницы (использована начальная страница сайта SEOmoz.org).
Рис. 2.17. Пример HTML-текста в исходном коде
Несмотря на то, что на рисунке есть HTML-коды, мы можем ясно видеть в этом коде обычный текст. Это именно тот уникальный контент, который ищет паук.
Кроме того, поисковые движки читают и некоторые другие элементы. Один из этих элементов – заголовок страницы (один из самых главных факторов при ранжировании данной web-страницы). Это текст, который демонстрируется в строке заголовков браузера (синяя полоса над меню браузера).
На рис. 2.18 показан тот код, который видит паук. В качестве примера использован сайт Trip Advisor (http://www.tripadvisor.com).
Рис. 2.18. Метатеги в исходном HTML-коде
Первый красный эллипс на рисунке обозначает тег заголовка страницы. Этот тег часто (но не всегда) используется как заголовок вашей позиции в результатах поискового движка. Исключением из этого правила являются данные вашего сайта, полученные из каталогов Yahoo! или DMOZ. Иногда поисковые движки могут видеть в качестве заголовка вашей страницы то, что было использовано в ваших данных в этих каталогах (а не тег заголовка страницы). Есть также и метатеги, которые позволяют вам блокировать это (такие, как тег noodp (который говорит поисковому движку, что не следует использовать заголовки DMOZ) и тег noydir (который говорит движку Yahoo! что не следует использовать листинг каталогов Yahoo!)).
В любом случае, на рис. 2.19 показано то, что происходит, когда вы ищете stone temple consulting (начальная страница Stone Temple Consulting находится по адресуhttp://www.stonetemple.com). Обратите внимание, что заголовок результатов поиска совпадает с заголовком начальной страницы Stone Temple Consulting.
Рис. 2.19. Результаты поиска, показывающие тег заголовка страницы
В дополнение к заголовкам страниц, поисковые движки читают также и метатег keywords. Это список ключевых слов, которые вы хотите ассоциировать со страницей. Спамеры (люди, которые пытаются манипулировать результатами поисковых движков в нарушение их указаний) много лет назад разрушили ценность этого тега для оптимизации (и поэтому его ценность нынче минимальна). Google вовсе не использует этот тег для ранжирования, но Yahoo! и Bing вроде бы уделяют ему внимание (вы можете прочитать об этом более подробно по адресу http://searchengineland.com/meta-keywords-tag-101-how-to-legally-hide-words-on-your-pages-for-search-engines-12099).
Тратить много времени на метатег keywords не рекомендуется (поскольку в плане оптимизации это вам ничего не даст).
Второй красный эллипс на рис. 2.18 обозначает пример метатега keywords.
Поисковые движки читают также и метатег description (третий красный эллипс на рис. 2.18). Однако метатег description не оказывает никакого влияния на рейтинги поисковых движков (http://searchengineland.com/21-essential-seo-tips-techniques-11580).
Тем не менее метатег description играет ключевую роль, поскольку поисковые движки часто используют его как описание вашей страницы в результатах поиска. Поэтому хорошо написанный метатег description может иметь существенное влияние на количество кликов по вашему элементу в результатах поиска. Потраченное на этот тег время даст ценные результаты. На рис. 2.20 показан поиск по trip advisor, который является примером использования метатега description в качестве описания в результатах поиска.
Рис. 2.20. Метатег description в результатах поиска
⇐ Предыдущая17181920212223242526Следующая ⇒
Дата публикования: 2014-11-18; Прочитано: 105 | Нарушение авторского права страницы
DataparkSearch Engine is a full-featured open sources web-based search engine released under the GNU General Public License and designed to organize search within a website, group of websites, intranet or local system.
The DataparkSearch documentation is enclosed in the release or snapshot distribution in the doc subdirectory. And it’s also available on-line in English (PDF, bytes) and in Russian.
You can use DataparkSearch group at the Google Groups ( groups.google.com/group/dataparksearch/) to seek an advice on DataparkSearch.
As well you can share your experience using DataparkSearch in this group.
Our old forum is closed for writing but it is still avalable to browse the old records.
DataparkSearch’s: ChangeLog (As a RSS feed); PAD file.
Latest DataparkSearch version released: dpsearch-4.53.tar.bz2, January 2010.
The snapshot of upcoming 4.54 version is updated regularly and available on Google Disk or in Google Code. There you can also download deb and RPM packages built with the latest snapshot.
The source code is available either in SVN repository in Google Code or in git repository on GitHub.
You may see all open bug reports or post a new one at Google Code’s home. Or use the similar issue tracking system on GitHub.
Изменить (апрель 2015):
Как многие заметили, мой старый блог теперь не функционирует.
Большинство моих статей были перенесены в блог Elastic и могут быть найдены путем фильтрации моего имени: https://www.elastic.co/blog/author/zachary-tong
Чтобы быть абсолютно честным, лучший источник знаний начинающих теперь Elasticsearch — The Definitive Guide, написанный мной и Клинтоном Гормли.
Он принимает нулевые знания в поисковых системах и объясняет поиск информации первому руководителем в контексте Elasticsearch. Хотя справочные документы касаются поиска точного параметра, который вам нужен, руководство представляет собой повествование, в котором обсуждаются проблемы в поиске и способы их решения.
Лучше всего, книга OSS и бесплатная (если вы не хотите купить бумажную копию, и в этом случае О’Рейли с радостью продаст вам:))
Изменить (август 2013):
Многие из моих статей были перенесены в официальный блог Elasearch , а также новые статьи, которые не были опубликованы на моем личном сайте.
Оригинальное сообщение:
Я также был разочарован изучением ElasticSearch, не имеющим опыта Lucene/Solr. Я медленно документировал то, что я узнал в своем блоге, и до сих пор есть четыре учебника:
Поэтому мне не нужно продолжать редактирование, все будущие учебники в моем блоге можно найти по этой категории.
И это некоторые ссылки, которые я добавил в закладки, потому что они были невероятно полезны так или иначе:
ответ дан Zach 02 авг. '12 в 0:08
источникподелиться
Elasticsearch — поисковая система, основанная на Apache Lucene, которая обеспечивает полнотекстовый поиск и мультиарендность с веб-интерфейсом HTTP и поддержкой без-схемных JSON-документов.
Среди основных преимуществ системы — сравнительная простота настройки и масштабируемость, большое количество модулей (благодаря API) и возможность весьма гибкого и быстрого поиска (хотя скорость индексации уступает Sphinx).
А еще Elasticsearch весьма легко справляется с поиском неточных соответствий, который работает по немного отличному от wildcard-поиска в Sphinx принципу.
Fuzzy-запросы используют сходство на основе расстояния Левенштейна для текстовых полей или границу слева-справа для числовых полей и дат.
Для этого используется запрос fuzzy, который генерирует все возможные соответствия, которые находятся в пределах максимального редакционного расстояния (задается параметром ), а затем проверяет словарь терминов для сравнения с существующим индексом.
Создадим простой индекс:
При помощи все того же curl и простого запроса GET можно провести первый поиск:
То есть мы провели fuzzy-поиск «surprize» по нашему индексу. Вывод будет содержать первый и третий документы, так как параметр по умолчанию равен auto:
Следующий пример содержит большее количество параметров :
Пройдемся по дополнительным параметрам:
Учтите, что малое значение и большое значение увеличивают время поиска и нагрузку на сервер.
Неточные совпадения в Elasticsearch также могут использоваться в запросах типа match.
К примеру:
Также можно производить неточный поиск по нескольким полям при помощи , а также использовать параметры и .
Fuzzy-запросы помогут расширить результаты поиска. При этом важно учитывать дополнительные параметры, которые увеличивают нагрузку на систему, а также назначать приоритеты, чтобы точные совпадения были выше неточных.
FILED UNDER : IT