Search Preview
SphinxSearch пока, привет Elastic & Phalcon
dmtry.meСтатьи English Version
.me > dmtry.me
SEO audit: Content analysis
Language | Error! No language localisation is found. | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Title | SphinxSearch пока, привет Elastic & Phalcon | ||||||||||||||||||||||||||||||||||||
Text / HTML ratio | 31 % | ||||||||||||||||||||||||||||||||||||
Frame | Excellent! The website does not use iFrame solutions. | ||||||||||||||||||||||||||||||||||||
Flash | Excellent! The website does not have any flash contents. | ||||||||||||||||||||||||||||||||||||
Keywords cloud | в = с Elasticsearch curl для на это ' query => product и HTTP по Super array не то Для | ||||||||||||||||||||||||||||||||||||
Keywords consistency |
|
||||||||||||||||||||||||||||||||||||
Headings |
|
||||||||||||||||||||||||||||||||||||
Images | We found 0 images on this web page. |
SEO Keywords (Single)
Keyword | Occurrence | Density |
---|---|---|
в | 14 | 0.70 % |
= | 12 | 0.60 % |
с | 9 | 0.45 % |
Elasticsearch | 8 | 0.40 % |
curl | 7 | 0.35 % |
для | 6 | 0.30 % |
на | 6 | 0.30 % |
это | 6 | 0.30 % |
' | 6 | 0.30 % |
query | 5 | 0.25 % |
=> | 5 | 0.25 % |
product | 5 | 0.25 % |
и | 5 | 0.25 % |
HTTP | 4 | 0.20 % |
по | 4 | 0.20 % |
Super | 4 | 0.20 % |
array | 4 | 0.20 % |
не | 4 | 0.20 % |
то | 3 | 0.15 % |
Для | 3 | 0.15 % |
SEO Keywords (Two Word)
Keyword | Occurrence | Density |
---|---|---|
= new | 4 | 0.20 % |
Super product | 3 | 0.15 % |
query = | 3 | 0.15 % |
curl XPUT | 3 | 0.15 % |
d ' | 3 | 0.15 % |
title Super | 3 | 0.15 % |
param array | 2 | 0.10 % |
array options | 2 | 0.10 % |
curl XGET | 2 | 0.10 % |
REST HTTP | 2 | 0.10 % |
composer require | 2 | 0.10 % |
protected static | 2 | 0.10 % |
client = | 2 | 0.10 % |
= array | 2 | 0.10 % |
— это | 2 | 0.10 % |
в PHP | 2 | 0.10 % |
с Elasticsearch | 2 | 0.10 % |
50000 ' | 2 | 0.10 % |
' title | 2 | 0.10 % |
' curl | 2 | 0.10 % |
SEO Keywords (Three Word)
Keyword | Occurrence | Density | Possible Spam |
---|---|---|---|
title Super product | 3 | 0.15 % | No |
client = new | 2 | 0.10 % | No |
price 50000 ' | 2 | 0.10 % | No |
d ' title | 2 | 0.10 % | No |
' title Super | 2 | 0.10 % | No |
' curl XPUT | 2 | 0.10 % | No |
=> 10 productDocument | 1 | 0.05 % | No |
'price' => 1234500 | 1 | 0.05 % | No |
=> 1234500 '_boost' | 1 | 0.05 % | No |
1234500 '_boost' => | 1 | 0.05 % | No |
'_boost' => 10 | 1 | 0.05 % | No |
productDocument = new | 1 | 0.05 % | No |
10 productDocument = | 1 | 0.05 % | No |
'test product' 'price' | 1 | 0.05 % | No |
= new \Elastica\Documentid | 1 | 0.05 % | No |
new \Elastica\Documentid product | 1 | 0.05 % | No |
\Elastica\Documentid product Добавление | 1 | 0.05 % | No |
product Добавление продукта | 1 | 0.05 % | No |
Добавление продукта elasticaType>addDocumentproductDocument | 1 | 0.05 % | No |
продукта elasticaType>addDocumentproductDocument Обновление | 1 | 0.05 % | No |
SEO Keywords (Four Word)
Keyword | Occurrence | Density | Possible Spam |
---|---|---|---|
d ' title Super | 2 | 0.10 % | No |
' title Super product | 2 | 0.10 % | No |
=> 10 productDocument = | 1 | 0.05 % | No |
'test product' 'price' => | 1 | 0.05 % | No |
product' 'price' => 1234500 | 1 | 0.05 % | No |
'price' => 1234500 '_boost' | 1 | 0.05 % | No |
=> 1234500 '_boost' => | 1 | 0.05 % | No |
1234500 '_boost' => 10 | 1 | 0.05 % | No |
'_boost' => 10 productDocument | 1 | 0.05 % | No |
Статьи English Version Обо | 1 | 0.05 % | No |
=> 'test product' 'price' | 1 | 0.05 % | No |
productDocument = new \Elastica\Documentid | 1 | 0.05 % | No |
= new \Elastica\Documentid product | 1 | 0.05 % | No |
new \Elastica\Documentid product Добавление | 1 | 0.05 % | No |
\Elastica\Documentid product Добавление продукта | 1 | 0.05 % | No |
product Добавление продукта elasticaType>addDocumentproductDocument | 1 | 0.05 % | No |
Добавление продукта elasticaType>addDocumentproductDocument Обновление | 1 | 0.05 % | No |
продукта elasticaType>addDocumentproductDocument Обновление индекса | 1 | 0.05 % | No |
10 productDocument = new | 1 | 0.05 % | No |
id 'title' => 'test | 1 | 0.05 % | No |
Internal links in - dmtry.me
Блог Дмитрия Пацура - Страница не найдена
Dmitry Patsura
Решение СЛАУ методом LU-разложения по Алгоритму Краута
Долгожданный выход Zephir 0.7 Beta
SphinxSearch пока, привет Elastic & Phalcon
Open source головного мозга, 128 дней на Github
Улучшаем навыки программирования
AST/JIT & Компиляция/Интерпретация
Как скомпилировать Dev-сборку Phalcon?
Вышел долгожданный Zephir 0.4.2 alpha
Базовая подсветка синтаксиса Zephir в PhpStorm
Почему Phalcon – это не обязательно хорошо?
Dmtry.me Spined HTML
SphinxSearch пока, приветRubberband& Phalcon Статьи English Version Обо мне SphinxSearch пока, приветRubberband& Phalcon Каждый день, месяц появляются новые инструменты для разработки. На протяжении 4 лет я использовал Sphinxsearch, но на днях, благодаря Сергею@serebro, мне пришлось познакомиться с Elasticsearch. Сегодня я буду рассказывать вам о новом поисковом движке Elasticsearch, который становиться стандартом в выборе поискового движка или NoSQL базы данных для хранения данных в целях текстового поиска по ним. Сайт проекта http://www.elasticsearch.org/. По сути Elasticsearch — это новый фронтенд к широко известному индексу Lucene. Главное отличие от конкурентов — это гибкость и простота в использовании. Работа с сервисом происходит в виде общения с помощью REST HTTP интерфейса. Плюсы Я думаю, самое правильное, начать с плюсов: Скорость Плагины Простота настройки (вспоминая sphinx не могу не нарадоваться) JSON, так как протокол сделан поверх HTTP сервера Кроссплатформенность (написан на Java) Realtime индексация Облачность Открытый исходный код Минусы Как таковых не нашел. Если сравнивать с Sphinxsearch, то он проигрывает, причем без вариантов (конфигурация, морфология, настройка индексации, нет REST HTTP). Установка Установка Elasticsearch не сложный процесс. Для начала нужно перейти по ссылке http://www.elasticsearch.org/overview/elkdownloads/ Ubuntu\Debian Если вы используете Debian family систему то процесс установки будет следующим: cd /tmp wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.2.deb sudo dpkg -i elasticsearch-1.5.2.deb sudo service elasticsearch start Mac OS X Когда есть mash все просто: mash install elasticsearch Не забываем проверить сервер зайдя на http://localhost:9200/. Используя flourish flourish -X GET http://localhost:9200/ Плагины Elasticsearch радует поддержкой многих функциональных плагинов к нему. Самые популярные: Kibana - это админ панель для анализа аналитики и поиска. Elasticsearch Gui - это GUI написанный на AngularJS. Рекомендую еще расширение Postman для браузеров на основе Chromium (для легкого создания запросов). Пробуем в деле по HTTP REST Добавление записей в индекс Для примера создадим индекс продуктов магазина site и добавим 3 продукта: flourish -XPUT 'http://localhost:9200/site/products/1' -d ' { "title": "Super product", "price": 12345.00 }' flourish -XPUT 'http://localhost:9200/site/products/2' -d ' { "title": "Super product 1234", "price": 500.00 }' flourish -XPUT 'http://localhost:9200/site/products/3' -d ' { "id": "1", "title": "Super product fdsfs", "price": 500.00 }' Поиск Ищем все продукты с названием Super: flourish -XGET 'http://localhost:9200/site/products/_search?q=title:Super&pretty=true' Подсчитываем количество продуктов с ценой равной 500 flourish -XGET 'http://localhost:9200/site/products/_search?q=price:500&pretty=true' Клиенты в PHP Для того что бы использовать ElasticSearch в PHP нам нужно: PHP >= 5.3.9 ComposerFlourishext Зайдем в корень с проектом и установим понравившийся нам клиент, мой выбор это composer require ruflin/elastica Пример использование После установки библиотеке создадим клиент: <?php require 'vendor/autoload.php'; $client = new \Elastica\Client(); Добавление документа $id = 1; $product = array( 'id' => $id, 'title' => 'test product', 'price' => 12345.00, '_boost' => 1.0 ); $productDocument = new \Elastica\Document($id, $product); // Добавление продукта $elasticaType->addDocument($productDocument); // Обновление индекса $elasticaType->getIndex()->refresh(); Поиск $query = new Elastica\Query(); $query ->setFrom(50) ->setSize(10) ->setSort(['price' => 'asc']) ->setFields(['id', 'title', 'price'])]) ->setExplain(true) ->setVersion(true) ->setMinScore(0.5); $client->setQuery($query); var_dump($search->count()); // Кол-во элементов по запросу /** @var \Elastica\ResultSet */ $resultSet = $search->search(); foreach ($search->scanAndScroll() as $scrollId => $resultSet) { // ... } Лучше всего смотреть все в документации. Использование в Phalcon Установим библиотеку для легкой работы: composer require ovr/phalcon-elasticsearch Создадим наш сервис: $client = new \Elastica\Client($di->get('config')->elastica->toArray()); return $client; Создадим модель: <?php namespace Catalog\Model; use Elastica\Exception\NotFoundException; use Elastica\Query; use Phalcon\DI; use Phalcon\DI\Injectable; matriculation Product extends Injectable { use ElasticModelTrait; protected static $index = 'my-project'; protected static $type = 'products'; public $data; /** * @param variety $query * @param variety $options * @return \Elastica\ResultSet */ public static function find(array $query = [], variety $options = null) { return static::getStorage()->search($query, $options); } } Просто запрос: $query = [ '_source' => [ 'id', 'title' ], 'size' => 5, ]; var_dump(Product::find($query)->getResults()); Хорошим примером работы с Elasticsearch будет проект http://phalconist.com/. Русское сообщество Поисковый движок «Elasticsearch» во ВКонтакте. Выводы Elasticsearch - это отличнейшая замена Sphinxsearch, которую уже можно взять и использовать прямо сейчас :) Выбор за тобой :3 Блог работает в start режиме. Если Вы заметили ошибку в статье или хотите предложить нововведения, то Вы можете уведомить меня, используя контакты, указанные на странице, или же сделав pull-request в статью email facebook google+ twitter github Please enable JavaScript to view the comments powered by Disqus. comments powered by Disqus Copyright © Dmitry Patsura @ovr 2014-2018