The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск каталогизатора домашней библиотеки MyLibrary 2.3"
Отправлено ProfessorNavigator, 21-Дек-23 18:39 
> Проще и эффективней в новый вектор добавлять найденные записи, а не удалять
> те, что не совпадают по критерию поиска.

Как уже писал выше - программа считает, что первой в записи в базе идёт фамилия автора. Но в реальности это далеко не всегда так. В случае с fb2 книгой, там может быть всё, что угодно, например - имя. Всё зависит от того, кто и как оформлял fb2 файл. А пользователь ввёл для поиска фамилию. Которая находится в конце записи, а значит книга в выдачу поиска уже не попадает. Или нужно проводить поиск отдельно по фамилии по всей строке с ФИО. Затем отдельно по имени, и т.д. Т.е. делать несколько переборов базы в любом случае (или строки ФИО, что в общем-то одно и то же). А если в базе 500000 книг или больше? Можно, конечно, оставить только одно поле ввода "Автор", и свалить на пользователя выбор последовательности: "ФИО", "ИОФ" и т.д. Но это уже, по-моему, неправильно. Пользователь совершенно не обязан знать, что и как Вася Пупкин ввёл в поле ФИО при конвертации своего бессмертного творения в fb2. И проходов по базе всё равно будет больше одного. Если же в любом случае нужно делать несколько переборов базы, то разумно с каждым следующим проходом уменьшать количество перебираемых элементов - удалять то, что не соответствует критерию предыдущего перебора.

Далее. Всё это можно проделывать с "оригинальным" вектором базы. Но поисков по одной и той же коллекции может быть несколько подряд. И в случае одного вектора придётся каждый раз читать заново базу. А жёсткий диск работает гораздо медленнее оперативной памяти. Т.е. оптимальный выход - создать копию "оригинального" вектора базы и издеваться уже над ним, тогда как оригинал полежит спокойно до следующего поиска или переключения коллекции.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру