1. Конфигурация системы 1.1 Конфигурационный файл appsettings.json Для настройки порта и интерфейса необходимо в "Bsa.Search.Api"."Host" указать порт и IP адрес или DNS на котором будет хостится система По умолчанию все интерфейсы и порт 2664 { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" } }, "AllowedHosts": "*", "Bsa.Search.Api": { "Host": "http://+:2664" }, "profiles": { "bsa_search_api": { "commandName": "BsaSearch", "dotnetRunMessages": "true", "launchBrowser": true, "launchUrl": "swagger", "applicationUrl": "http://+:2664", "environmentVariables": { "ASPNETCORE_ENVIRONMENT": "Development" } } } } 1.2 Конфигурация уровня логирования и местоположения логов NLog.config Для уменьшения нагрузки на дисковую систему уровни логирования следует с Info повысить до Warn. По умолчанию 3 уровня логирования: - в консоль ColoredConsole-Trace, уровень логирования Info (все события) - в файла FlatFile-Trace, уровень логирования Info (все события) - в файл FlatFile-Error, уровень логирования Error (только ошибки) 1.3 Конфигурация поисковых индексов searchServiceMan searchServiceManager.json { "ClearMemoryInterval": "00:01:00", "CloseIndexInterval": "00:30:00", "IndexLiveInterval": 60, "NeedCloseIndex": "true", "UseLocalTermRepository": "true", "PercentMemoryUsage": 80, "ShardCount": 16, "AvailablePhysicalMemory": 64000, "IndexFolder": "Data\\searchindex" } Где: ClearMemoryInterval - интервал освобождения кэша поисковых индексов CloseIndexInterval - интервал проверки времени жизни индекса связан с IndexLiveInterval IndexLiveInterval - время жизни индекса в минутах, если индекс не используется в заданный интервал времени он закрывается UseLocalTermRepository - использовать локальный репозиторий для хранения термов, иначе необходимо передать внешний репозиторий PercentMemoryUsage - процент используемой памяти от максимально возможного AvailablePhysicalMemory в процентах ShardCount - количество шард в индексе, на текущий момент возможны 2 варианта значений 1 или 16 AvailablePhysicalMemory - максимально доступный объем оперативной памяти на компьютере в МБ, после которого будет инициирован процесс очистки памяти (закрытия индексов) IndexFolder - место нахождения индексов 2. Информация о системе методы апи GET /api/v1/search/version - проверка версии GET /api/v1/search/state?index=test - получение информации о конкретном индексе GET /api/v1/search/info - информация о всех индексах Список всех доступных методов http://localhost:2664/swagger/index.html 3. Возмодные проблемы в процессе эксплуатации 3.1 Нехватка оперативной памяти Ситуация может возникнуть, если пользователь использует большое количество поисковых запросов с wildcard, на большом индексе, связана с тем что большие колекции в .net живут до момента пока не законичится RAM или не будет вызвана принудительная очистка 2 поколения, система выполняет принудительную очистку только при достяжение порога в используемой памяти AvailablePhysicalMemory*PercentMemoryUsage. При уменьшение параметра AvailablePhysicalMemory или PercentMemoryUsage, может произойти замедление работы поиска из-за постоянного выполнения сборки мусора. 3.2 Нехватка дискового пространства Индексы хранятся согласно данных, которые указаны в кофигурационном файле searchServiceManager.json параметр IndexFolder. Можно удалить *.back файлы, если не запущен процесс переиндексации, проверить это можно методом GET /api/v1/search/info 3.3 Проблема индексации не текстовых документов Если на вход системы будет подан документ информация в котором будет идти без разрывов, т.е. текст будет единым словом на несколько МБ или ГБ. Это может привести к проблеме с потреблением оперативной памяти. 4. Структура файлового хранилища Каждый индекс содержит следующие файлы terms.info - список всех термов с инкрементальными Id, zerobase Terms.nbidb - бинарная информация о термах и документах, в которых они находятся ShortDocuments.idb - бинарная информация об индексируемых файлах, без исходной информации(только термы, поля) Meta.info - метоинформация об индексе, количество документов ExternalIds.bidb - информация о внешних идентификаторах .brow - содержат бинарную информацию, о нахождение того или иного идентификатора (индексные файлы) .back - файлы в которых сохраняются бакапы при выполнение операции Reindex(операция переиндексации запускается после перезапуска системы, если индекс становится не оптимальным, чтобы уменьшить дисковое чтение) 5. Клиенты для работы с API .Net Standart 2.0 https://www.nuget.org/packages/Bsa.Search.Core.Rest