Занимаясь разработкой проекта «Матрица жизни», наша команда проводила сотни встреч и обсуждений, в ходе которых разрабатывались и уточнялись множество деталей, определений и взаимосвязей. Велась запись протоколов встреч, но это ложилось сплошной информационной лентой, из которой практически невозможно было получить полную и законченную информацию по какой-либо теме.
Возникла потребность структурно раскладывать выводы и решения по темам и направлениям. С учётом того, что в процессе исследований выводы и определения не только уточнялись, но и опровергались, было принято решение о том, что каждая законченная мысль должна быть оформлена отдельно, как некая атомарная единица информации.
Каждая такая атомарная единица является детализирующей информацией для более общих определений и обобщающей для более детальных. Поэтому древовидная структура хранения информации была признана идеальной для структуры Базы знаний. При чём никогда заранее невозможно знать, будет ли та или иная информация конечной или же окажется, что у неё есть детализация. Поэтому было решено отказаться от разделения структуры на группы и конечные элементы. Любой конечный элемент может стать группой, включающей в себя составные части.
В отличие от обычной структуры дерева, где у одного элемента может быть несколько дочерних, но лишь один родительский, было решено создать такое дерево, которое позволяет иметь и несколько родительских элементов. Такое ветвление соответствует принципам жизни «связь многих с многими». Например, в четырёхугольниках квадрат может быть частным случаем как прямоугольника, так и ромба.
Среди существующих систем хранения информации мы не нашли ничего подобного, поэтому я взялся создать такой инструмент. Помимо описанной выше уникальной возможности, эта система хранения данных обладает основным набором стандартных:
- 4 детализации описания: заголовок, подзаголовок, основной текст и дополнительная информация.
- Тэги.
- Связанные материала (это т.н. горизонтальные связи, позволяющие указывать взаимосвязи вне структуры детализации-обобщения).
- Дополнительные информационные поля, позволяющие фильтровать поисковую выдачу.
- Полнотекстовый морфологический поиск.
- Журнал изменений.
- Возможность обсуждения.
- Уровни доступа пользователей к материалам Базы знаний.
- Выгрузка материалов в текстовый файл для подготовки материалов для статей.
Отдельно хочется сказать про функцию цитирования. Есть возможность вставлять цитаты в текст из других материалов Базы. Цитата вставляется в виде ссылки таким образом, что если цитируемый текст будет изменён, то везде, где на него ссылаются, появится новая его версия.
В создании Базы знаний использован следующий стек:
- PHP 8.2 + MySQL 5.7
- Yii 2.0
- AdminLTE 3.2
Сейчас База знаний работает в открытом доступе. Она сама представляет свои возможности, а также содержит как открытые проекты, доступные каждому, так и закрытые рабочие проекты, для обслуживания которых и была создана.
Программно-информационный комплекс «База знаний» можно приобрести. О способах приобретения рассказано здесь.