Поиск в системе

Не работает полнотекстовый поиск.

Решение

Если в системе не работает полнотекстовый поиск, необходимо выполнить следующее:

  1. Убедиться, что на диске с индексом достаточно свободного места (min ~3ГБ);
  2. Убедиться, что индексация включена. Для этого в пункте меню "Администрирование" – “Консоль JMX” выбрать метод app-core.fts:type=FtsManager, и проверить, что атрибут Enabled выставлен в значение true;
  3. Остановить службу Apache Tomcat;
  4. Удалить файл write.lock из папки индекса, если он есть (путь по умолчанию tomcat\work\app-core\ftsindex);
  5. Запустить службу Apache Tomcat;
  6. Зайти в пункт меню “Администрирование” – “Консоль JMX” и выбрать метод app-core.fts:type=FtsManager;
  7. Выполнить метод java.lang.String reindexAll(). Это создаст очередь на переиндексацию;
  8. Дождаться завершения обработки полученной очереди и проверить работу поиска. Убедиться в завершении процесса можно запросом “select count(*) from SYS_FTS_QUEUE” (результат должен быть 0).
Действия, которые необходимо выполнить при обнаружении файла write.lock в папке индекса.

Решение

Данный файл обычно записывается, когда заканчивается место на диске, где расположена папка ftsindex. Этот файл - флаг для того, чтобы система не пыталась переписывать индекс при нехватке места. При обнаружении такого файла требуется убедиться, что на сервере достаточно свободного места, остановить систему ТЕЗИС, удалить файл и снова запустить систему ТЕЗИС. Возможно, потребуется выполнить переиндексацию, как описано выше.

Какие есть особенности у поиска в простом режиме (полнотекстовый поиск)?

Решение

Поиск ведется по следующим правилам:

  • если искомая строка обрамлена кавычками, то ищется соответствующая фраза - набор таких же слов в том же порядке, игнорируя знаки пунктуации;
  • если искомая строка начинается с символа “*”, то производится поиск по вхождению строки в любой части слова индексированных данных;
  • в противном случае поиск производится по совпадению искомой строки с началом слов индексированных данных.