PMS
Full-Text Search Engine for .NET Core

Introduction

Simple Full-Text search engine with no external dependencies written in C#. GitHub repository

The aim of this project is to showcase algorithms, data structures and techniques that are used to created full-text search engines.

Query Language

  • WORD(apple) - single word
  • WILD(app*) - wildcard pattern
  • EDIT(apple, 1) - Levenshtein (edit distance, fuzzy search)

Conjunction operators

  • OR - boolean or
  • AND - boolean and
  • SEQ - sequence of words, phrase

Examples of queries:

  • AND(WORD(apple), OR(WILD(a*), EDIT(apple, 1)))
  • SEQ(WORD(hello), WORD(world))

Data Structures

Dictionary of the persistent index is implemented using: Ternary Search Tree

Algorithms

Approximate term matching is based on Levenshtein automaton

References

Last updated: 27.04.2018,
created: 20.04.2018.