Bsa.Search.Core библиотека .Net Core обеспечивающая индексацию и быстрый полотекстовый поиск, подсветку объектов. Поисковый движок проверен на большой нагрузке и подходит для сложных аналитических запросов. Обрабатывает до 100 тысяч простых запросов в минуту на индексе из 2 млн документов, или примерно 8 тысяч сложных аналитических запросов
Поисковый движок и подсветка объектов находится в промышленной эксплуатации в нескольких компаниях.

Возможности поискового движка:
Обыный индекс до 2КК сообщений, зависит от размера текста поступающего на индексацию и его разнородности
Шардированный индекс до 40КК сообщений
Обработка до 8К аналитических запросов в минуту
Просто масштабировать, дисковые индексы можно просто скопировать
Сервис подсветки объектов:
Оптимизирован на скорость подсветки и небольшую утилизацию оперативной памяти.
Проверено на 5К объектов на 2КК сообщений в день.
Необходимый объем памяти от 2 до 4 GB RAM.
Загрузка ЦПУ 30-80 процентов.

Бытсрый старт
Ключевые слова
"~" - дистанция в обе стороны, пример (один ~3 два)

"-" - отрицание, может включать в себя любые другие запросы, но оператор должен стоять последним. пример: (один ~3 два) -(три ~5 два)

"|" - логическое или

"&" или " " - логическое и, пробел также воспринимается как логическое и

"/" - дистанция вправо, пример (один /3 два)

"" - фраза со всеми словоформами

'' - фраза точное соотвествие указанным словоформам

"*" - wild card. пример: (один* | дв*)

"?" - возможность игнорировать одну или более букв. пример: (о??н | дв?)

"()" - группировака запросов в логические единицы. пример: ("один* два") ~100 (три|четыре|пят?)

":" - указываем в каком поле искать, по умолчанию поиск производится по всем полям. Пример: content:(one & two)

Словоформы
Если вам необходимо добавить свои словоформы, тогда вам надо добавить в директорию где находятся исходники файл с расширением '*.terms'. Содержимое файла это слова разделенные пробелом, каждая новоя словоформа разделена символом начала строки

Пример:
два две двух двумя 2

слова слово словом