Search is omnipresent these days, from the moment we type a set of keywords into our favourite search engine to find a webpage we are looking for to the moment we type a name and expect our email client to find all the emails sent by that person. Both these processes are based on years of research and experimentation in the field of Information Retrieval in order to efficiently being able to find the most relevant documents.
This blogpost will show how to set up Elasticsearch, one of the best and most popular search engines (with Solr being the other main alternative). Its main characteristic is to allow unbelievable scalability and advance querying and indexing capabilities with minimum engineering effort. In addition to this, I will also shown how to perform some basic operations using elastisch, a fantastic library for elasticsearch written in Clojure.
Word2Vec is a novel technique that produces a vector representation of documents where the meaning and relationships between words is encoded spatially. Therefore, words that are related to each other are closer on the defined feature space. Word2Vec is gaining huge traction in the machine learning community and it is definitely worth to know more about it. This blogpost will illustrate the main characteristics of this methods and it will provide an proof of concept using Clojure libraries.
My background as a developer for the last 10 years or so (I am getting older…) has been based mainly on Java and Python, with minor incursions in other languages. However, my contact with the functional programming paradigm was limited to my Artificial Intelligence assignments in Lisp at the university. Functional programming is now a key part of my life as a developer. I have been using Clojure for most part of the last year and I can say that I believe functional programming in general, and Clojure in particular are amazing tools to solve several problems for which other paradigms provide inelegant solutions.