Sorry it took me a whole day to reply to your question from Slack.
The short answer: ElasticSearch and Solr will provide you with intelligent string search based on properties of an entity, but does not provide the ability to search across relationships of an entity.
For example in your sample query: search for “create web application”, ElasticSearch/Solr will return documents where the strings contained in these documents have a high hit rate to the string that you gave.
However, ElasticSearch/Solr could not return to you queries, such as: search for “action movies filmed in south africa in the 2000s”. Because in that query, you are searching for 1 type, movie, where based on 3 types of criteria: action genre, year between 2000-2009, and location in South Africa. Grakn can do this query.
There’s the key distinction. Graql (Grakn’s language) allows you to query for many relationships between entities, to filter your result, while ElasticSearch/Solr only provides intelligent string matching. And in the [near] future, we will actually be integrating ElasticSearch/Solr into our string-matching for every resource under-the-hood, anyways. So basically, you should be able to do all the intelligent string matching that you can do in ElasticSearch/Solr, plus you can query for relationships between entities to contextualise your result.
I hope that explains the relevance scoring, as well. Which basically means relevance will be contextualised based on relationships to other entity.
As to “how does one build a semantic search engine using Grakn?”. Well, first of all, we’ve built ont: Moogi.co, so you should check it out. and test action movies filmed in south africa in the 2000s.
In terms of high-level steps to achieve it:
- Gather your data sources which you want to consolidate into one knowledge base to search over.
- Gather the schema of every data source
- Compile all schemas of every data source into one Grakn ontology, and load it into a Grakn database.
- Write migration scripts (using Graql migration language) to migrate all datasource into the Grakn database.
Of course the 5 steps above is significantly simplified set of steps, as you can image. But that’s generally the approach.
Let me know if my answer helps!