A full-text search engine indexes and searches natural-language text. It is designed for search workloads that traditional databases handle poorly, especially large text collections, incomplete queries, spelling mistakes, synonyms, and language variation. section 1.2.3
Search engines differ from traditional databases in several practical ways:
- Optimize indexing and near-real-time searching across large volumes of text rather than primarily storing structured records. section 1.2.3
- Support search behavior such as fuzzy matching, stemming, and synonyms, instead of relying mainly on exact value matching. section 1.2.3
- Handle unstructured and semi-structured data across fields without requiring every searchable value to remain normalized across relational tables. section 1.2.3
From search library to search service
Apache Lucene supplies high-performance indexing and searching as a Java library, so an application must integrate it through programming interfaces. Elasticsearch wraps Lucene in a distributed, scalable, programming-language-agnostic server. Solr and OpenSearch are other search-engine options built on Lucene. section 1.3.2 section 3.1
Full-text search engines can support application search, monitoring, log analytics, security-event capture, and other workloads where relevance, speed, scalability, availability, and fault tolerance matter. section 3.1
