Difference between full-text search and exact match
In this section, we will describe analyzers and why they are necessary for text search. Let's say we have a document containing the following information:
{ "date": "2017/02/01", "desc": "It will be raining in yosemite this weekend" }
If we want to search for the documents that contain word yosemite
, we could run an SQL query as shown here:
select * from news where desc like '%yosemite%'
This functionality is very limited and is never sufficient for real-world text-search queries. For example, if a user is looking for the weather forecast in Yosemite, he/she would query for the same in human language using something such as rain in yosemite
. Since SQL can only match the exact words, and the document doesn't contain the word rain
, the query will not come back with any results.
Elasticsearch is a full-text search engine and is built to handle these kinds of queries. Before the documents are indexed into Elasticsearch, the fields in the...