Share Button
Sievebox Logo

In this new post I’m going to talk about our new application called Sievebox.

Sievebox is a feed application, a bit like feedly or Google Reader, but smart enough to know what you like, and only show you the interesting articles.

Sievebox is designed to help you search for interesting article and to provide a simple and powerfull interface.

What is the problem ?

You definitely like things : probably computer science and programming (else, you are completely lost my friend), maybe movies, soccer, 90′s rap, kiwi cake recipies, political news in Lesotho and many more things. When you have time to waste (at home, at work, in the subway, …), you may search websites to find something to read, to watch, to listen.
But you have to search, and often, you don’t really know what to search. News websites are great to read fresh information but there are many topics that are not interesting for you.

Feeds is quite good. But you must choose the websites you want to follow, and ever after that, you have to browse each of them to find something to read. And when you follow a website, you are not interested in all the subjects.
That’s why we have imagined Sievebox. This application looks for the information that interests you, and brings them to you.

How Sievebox works?

It’s as easy as checking the topics you like and reading the returned articles.
Let’s imagine you like space exploration, basket-ball (fan of L.A. Lakers), Star Wars and you are living in Los Angeles.

Without Sievebox

Let’s list what you are probably doing now to be informed, or just to spend time on the internet.

- you follow @NASA, @Lakers and @starwars on Twitter.
- you read the LA Times every day to know what happens in LA, and in the world.
- you browse Youtube to watch the best Lakers’s games and funny videos about Star Wars
- you read the same article about Apollo 11 again and again on Wikipedia
- you use Google News to have more news about space exploration
- maybe you know 2 or 3 interesting blogs about basketball

Lot of work, isn’t it?

With Sievebox

- you download Sievebox
- you check all the topics you are interested in
- all tweets, news, blog articles, video, … are now displayed on your dashboard

And that’s it.

The schema below describes how the interface would look like.
blog_howitworks1

Once you have chosen your topics, you can browse the articles proposed by Sievebox. The differents sources of a same topic are gathered to avoid you to read the same thing again and again, like Google News does.
You can also have an idea of the time needed to read the article, based on your reading speed which is reevaluated each time you read something on Sievebox.

The relevance of the articles is adjusted depending on what other people who share your interests liked or not.
As a very fan of Star Wars, we don’t want you to read a poor article. Let’s other fans decide what articles are amazing.

Here is a draft of the Sievebox interface :

Capture du 2015-06-11 11:28:06

And a little video to present Sievebox :

What about now ?

The Sievebox application is in development and we’ll release a version alpha soon.
You can follow us on Twitter to stay in touch

You can (and should) also subscribe to get the early version of the application and benefit from advantages.
Register now

Share Button

Share Button

Lire la version française

Elasticsearch is able to index huge sets of data, documents as well as numeric data.
In the versions before the v1.0.0, facets allowed to calculate statistics for a list of indexed documents (tag distribution, mean, standard deviation, …)
Over time, the use of facets evolved. The developers wished to use them to do more and more complex statistics.

To fit this need, the great Elasticsearch team added the implementation of aggregations.
- Metric: sum, minimum, maximum, mean, …
- Buckets : term, date or value distributions (and many others) aggregations can contain sub aggregations. So, we can calculate statistics inside a term distribution, how crazy is that?

The goal of this post is to describe one of the many uses of aggregations : statistics.

Continue reading

Share Button

Share Button

Lire la version française

In this post, we’re going to sort and paginate our articles list with Symfon Elasticsearch and the WhiteOctoberPageFantaBundle. This post follows the post about Indexing and simple search with Elasticsearch and Symfony that you should read. We suppose you have already implemented the search system and all the code will not be shown here.
Paginate with Symfony is as easy as adding some properties to our Search model and ask the WhiteOctoberPageFantaBundle to handle the pagination.

Updating the model

First, let’s update the search model to add some properties to handle the sorting and the pagination (as we said before, we’ll not show the whole code but only the one which has been changed since we wrote the previous post). And as usually, you can find the full project on Github.
Continue reading

Share Button

Share Button

Lire la version française

Today, I encountered an “issue” when using numeric variable as key in a Twig array.
This is a very specific problem which is due to the use of the array_merge php function. The documentation tells that “values in the input array with numeric keys will be renumbered”. So my goal here is not to explain the reasons of this behaviour but rather explaining my problem, and propose a solution.
Continue reading

Share Button

Share Button

Lire la version française

The XML configuration for FOSElasticaBundle is powerful, but in some cases this is not enough.
In order to solve this, FOS allows you to override the transformation from Doctrine Object to an ElasticSearch Document : ModelToElasticSearchTransformer.

Continue reading

Share Button

Share Button

Lire la version française

When and why hydrating objects thanks to Transformers?

When you use Elasticsearch and the FosElasticaBundle Finders, the responses received from Elasticsearch are automatically transformed into Doctrine objects.

In some cases, you will need to display some information that come from a join : a photo, a category translation, …
Unfortunately, the hydratation is only done on the objects : FosElasticaBundle transforms the ids that match your search into objects via a select * in (:ids).
The consequence is that, for each entry in your results list, Doctrine will make a query for the join object (for example a Category). For 100 results in 100 different categories, 100 simple queries will be done. You understand what can happen with a complex model and several joins.

Fortunately, you can avoid that by overriding the Transformer.
Continue reading

Share Button

Share Button

Lire la version française

In a non relational database system, joins can miss. Fortunately, Elasticsearch provides solutions to meet these needs :

Array Type

Read the doc on elasticsearch.org

As its name suggests, it can be an array of native types (string, int, …) but also an array of objects (the basis used for “objects” and “nested”).
Continue reading

Share Button

Share Button

Lire la version française

Elasticsearch allows you to make advanced searches. Some users may want to extract their search results to Excel (or LibreOffice Calc…) to work on the data.

As we explained in our post Export data to a csv file with Symfony, the goal of a (successful) export is to limit the effect on the server.

With Elasticsearch, we can use the scan and scroll functions to iterate.

Continue reading

Share Button

Share Button

Lire la version française

This article talks about the implementation of a search with Elasticsearch on a Symfony project.

Install Elasticsearch

Continue reading

Share Button

Share Button

Lire la version française

This article is the second one about Elasticsearch.
Its goal is not to present what is Elasticsearch, you can read more about it on other blogs, like this one (in French). But it will allow you to get to the heart of the matter, and to understand the following articles.

Continue reading

Share Button