1

Тема: Как работает поиск по записям?

Мне просто интересно, когда будет тысячи записей, поиск будет таким же быстрым?
Создаётся какой-то поисковой индекс или выполняется последовательный перебор всех файлов и строк в них?
Как выполнить поиск в обычной базе (выборки, фильтры и пр.) понимаю, а когда каждая запись в отдельном файле - интересно.

2

Re: Как работает поиск по записям?

Вы наверно имеете в виду поиск по тексту записей.

В MyTetra в настоящий момент для поиска по тексту записей никакого индекса не создается. Я не занимался задачей создания индекса потому, что на практике она оказалась не сильно востребованной. В настоящий момент просто происходит перебор файлов и строк в них.

Почему индекс не реализован? Потому что в большенстве своем поиск происходит по тегам и наименованиям записей, и такой поиск происходит мгновенно даже на тысячах записей, потому что эти данные находятся в памяти (в структуре дерева). Поиск по тексту записей нужен когда нужно найти что-то действительно уникальное. Но всегда следует помнить, что самое главное при работе с информацией - это качественно ее тегировать. Тогда в полнотекстовом поиске и не будет нужды.

Сейчас у меня на стареньком железе поиск по текстам всех 6200 записей длится 35 сек при первом запуске и 12 сек при последующем, даже если искать другое слово/слова. Я спокойно могу подождать это время, если мне вдруг действительно необходимо найти что-то в текстах записей. Кроме того, поиск можно ограничивать конкретной веткой (переключатель Вся база/Текущая ветка), тогда все находится очень быстро.

Кстати, еще по поводу поиска полезно знать следующее. При поиске откидываются знаки препинания - точки, запятые, различные скобки и т. д. Но если надо найти какую-то конкретную строку, то ее можно заключит в кавычки. Строк в кавычках может быть несколько.

Подробнее про поиск рассказывается вот тут:

https://www.youtube.com/watch?v=Bmp_dk2LA6I&t=1787s