On the 22nd there will be a short maintenance to migrate meta data storage to Elastic Search. This opens the door to extremely flexible development in terms of building robust SFSIs. On the 23rd we will be aiming to open source the port of the existing SFSIs to the new infrastructure which will illustrate how easy it is for 3rd party developers to build on top of AFIX. Technically since it's pure client-side code it already is "open source" but I mean formalizing it a bit
Previously, queries were handled by calling a specialized server-side defined function.
If we take a look at how the default search query works for
https://gateway.novusphere.io it's (primitively) defined as
case "generic":
{
string q = (string)qobj.q;
string[] data = q.Split(' ').Where(d => d.Length >= 3).ToArray();
int length = data.Length;
all_objects = DbContext
.IndexedFiles
.Select(f => new GatewayObjectModel()
{
Id = f.Id,
Likes = f.Likes,
Dislikes = f.Dislikes,
MetaData = f.MetaData,
SearchScore =
data.Count(d => f.Title.Contains(d)) * (100000.0 / length) +
data.Count(d => f.Description.Contains(d)) * (50000.0 / length)
});
}
and client side called as
var p = args[2];
var q = decodeURIComponent(args[3]);
novus.searchQuery({ type: 'generic', q: q }, p)
.done(function (res) {
// pagniater
res.getPage = function (p) { return novus.getUpdatedHash(2, p); };
render(res);
});
the importance to note here is for this to actually work, we were required to define something serve side. This is bad design for the long term which is why it was always intended to change it as the client shouldn't need to ask the server for some sort of specialized permission on how it finds it's relevant data within the index.
Since the new system is built around ES we're able to utilize ES's Query DSL and will build our queries fully client side. An example of this is you can already execute this query in your clients browser which has a similar effect to above (weighing the title more than the description), although most data has not been added to ES currently other than test samples.
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-multi-match-query.htmlFull Elastic DSL documentation:
https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl.htmlThrough Elastic Search Query DSL the client will be able to build very powerful queries to filter through all the data indexed by AFIX which opens the doors to numerous applications in terms of building SFSIs.
This is interesting, there is no fixed date when the ICO will end, so the developer can decided to end it even next year at his own discretion.
This would be counter intuitive as two of the main reasons we're raising money is for on going development costs as well as initial start up costs with organizing our business operations such as legal research. Right now, our current estimate is that the end date will be set some time near the end of March or early April and this has been the estimate since round 2 started.