Гигабазаданных МКАДб (не путать с МКАД)— это проект, написанный на языке Rust, представляющий собой высокоскоростной сервер, предназначенный для поиска заметок по ключевым словам с поразительной быстротой. Его цель — обеспечить невероятно быстрый и эффективный поиск в огромных объемах данных. Проект разрабатывается, как средство для нахождения связей между заметками в плагине intellivault. Автором сей прекрасной бд является intbyte.
Вот документация к данному проекту:
1. Связывание ключевых слов с файлом
- Метод:
POST
- URL:
/add_keywords
- Формат:
application/json
- Тело запроса:
{
"name": "example.txt",
"keywords": ["keyword1", "keyword2", "keyword3"]
}
- Описание: Этот эндпоинт связывает файл с заданными ключевыми словами. После выполнения запроса файл будет ассоциирован с ключевыми словами в базе данных, что позволит легко искать файлы по этим ключевым словам в будущем.
- Параметры:
name
: Имя файла, с которым нужно связать ключевые слова.keywords
: Массив ключевых слов, которые будут ассоциированы с файлом.
- Ответ: Не возвращает данных (HTTP 204 - No Content).
2. Получение ключевых слов по имени файла
- Метод:
GET
- URL:
/get_keywords/<name>
- Описание: Этот эндпоинт возвращает список ключевых слов, ассоциированных с файлом по имени.
- Параметры:
name
: Имя файла, для которого нужно получить ключевые слова.
- Ответ:
["keyword1", "keyword2", "keyword3"]
- Примечание: Если файл не найден, возвращается ошибка (HTTP 404 - Not Found).
3. Удаление файла
- Метод:
POST
- URL:
/remove_file/<name>
- Описание: Этот эндпоинт удаляет файл и все связанные с ним ключевые слова из базы данных.
- Параметры:
name
: Имя файла, который нужно удалить.
- Ответ: Не возвращает данных (HTTP 204 - No Content).
4. Получение файлов по ключевым словам
- Метод:
GET
- URL:
/get_files_by_keywords
- Описание: Этот эндпоинт позволяет получить список файлов, соответствующих заданным ключевым словам. Файлы сортируются в зависимости от количества совпавших ключевых слов.
- Параметры:
keywords
: Массив строк с ключевыми словами для поиска.rules
: Правила для поиска.take_first
: Количество файлов, которые нужно вернуть (целое число).sorting_type
: Тип сортировки:Downgrade
: Сортировка файлов по убыванию количества совпавших ключевых слов.Upgrade
: Сортировка файлов по возрастанию количества совпавших ключевых слов.Random
: Сортировка файлов случайным образом.
minimum_threshold
: Минимальное количество совпавших ключевых слов, начиная с которого файл будет включен в выборку.
- Ответ:
["file1.txt", "file2.txt", "file3.txt"]
- Примечание: Если не найдены файлы, соответствующие запросу, возвращается пустой массив.
5. Сохранение резюме в файл
- Метод:
POST
- URL:
/save_summary
- Описание: Этот эндпоинт сохраняет резюме в файл с заданным именем.
- Параметры:
name
: Имя файла, в который будет сохранено резюме.text
: Текст резюме, который нужно сохранить.
- Ответ: Не возвращает данных (HTTP 204 - No Content).
6. Получение резюме из файла
- Метод:
GET
- URL:
/get_summary
- Описание: Этот эндпоинт позволяет получить текст резюме из файла по имени.
- Параметры:
name
: Имя файла, из которого нужно получить резюме.
- Ответ:
"Текст резюме"
- Примечание: Если файл не найден, возвращается ошибка (HTTP 404 - Not Found).
Структуры данных:
SortingType
- Описание: Тип сортировки для поиска файлов по ключевым словам.
- Значения:
Downgrade
: Сортировка файлов по убыванию количества совпавших ключевых слов.Upgrade
: Сортировка файлов по возрастанию количества совпавших ключевых слов.Random
: Сортировка файлов случайным образом.
KeywordsMatcher
- Описание: Структура для передачи информации о ключевых словах и правилах поиска.
- Поля:
keywords
: Массив строк, представляющих ключевые слова для поиска.rules
: Правила для поиска, включающие параметры сортировки и минимальные пороги.
MatcherRules
- Описание: Правила для поиска файлов по ключевым словам.
- Поля:
take_first
: Количество файлов, которые нужно вернуть.sorting_type
: Тип сортировки (см.SortingType
).minimum_threshold
: Минимальное количество совпавших ключевых слов, начиная с которого файл попадет в выборку.
FileKeywords
- Описание: Структура, описывающая файл и его ассоциированные ключевые слова.
- Поля:
name
: Имя файла.keywords
: Массив ключевых слов, ассоциированных с файлом.
ГИГА ПРИМЕР
import fetch from 'node-fetch';
// Функция для связывания ключевых слов с файлом
async function addKeywords(name: string, keywords: string[]): Promise<void> {
try {
const response = await fetch('http://localhost:3000/add_keywords', {
method: 'POST', // Метод POST для отправки данных
headers: {
'Content-Type': 'application/json', // Указываем, что отправляем данные в формате JSON
},
body: JSON.stringify({
name: name,
keywords: keywords, // Включаем имя файла и ключевые слова
}),
});
// Проверяем, успешен ли запрос
if (response.status === 204) {
console.log('Ключевые слова успешно связаны с файлом');
} else {
console.log('Ошибка при связывании ключевых слов с файлом');
}
} catch (error) {
console.error('Произошла ошибка при выполнении запроса:', error);
}
}
// Функция для получения ключевых слов по имени файла
async function getKeywords(name: string): Promise<void> {
try {
const response = await fetch(`http://localhost:3000/get_keywords/${name}`, {
method: 'GET', // Метод GET для получения данных
});
// Если файл найден, выводим ключевые слова
if (response.ok) {
const keywords = await response.json();
console.log(`Ключевые слова для файла ${name}:`, keywords);
} else {
console.log('Файл не найден');
}
} catch (error) {
console.error('Произошла ошибка при выполнении запроса:', error);
}
}
// Функция для удаления файла
async function removeFile(name: string): Promise<void> {
try {
const response = await fetch(`http://localhost:3000/remove_file/${name}`, {
method: 'POST', // Метод POST для удаления файла
});
// Проверяем, успешен ли запрос
if (response.status === 204) {
console.log('Файл успешно удален');
} else {
console.log('Ошибка при удалении файла');
}
} catch (error) {
console.error('Произошла ошибка при выполнении запроса:', error);
}
}
// Функция для получения файлов по ключевым словам
async function getFilesByKeywords(keywords: string[], takeFirst: number, sortingType: string, minimumThreshold: number): Promise<void> {
try {
const response = await fetch('http://localhost:3000/get_files_by_keywords', {
method: 'GET', // Метод GET для получения списка файлов
headers: {
'Content-Type': 'application/json',
},
// Преобразуем параметры в строку запроса (query string)
body: JSON.stringify({
keywords: keywords,
rules: {
take_first: takeFirst, // Количество файлов для возврата
sorting_type: sortingType, // Тип сортировки
minimum_threshold: minimumThreshold, // Минимум совпавших ключевых слов для файла
},
}),
});
// Если файлы найдены, выводим их
if (response.ok) {
const files = await response.json();
console.log('Файлы по ключевым словам:', files);
} else {
console.log('Файлы не найдены');
}
} catch (error) {
console.error('Произошла ошибка при выполнении запроса:', error);
}
}
// Пример вызова всех функций
// Добавляем ключевые слова для файла
addKeywords('example.txt', ['keyword1', 'keyword2', 'keyword3']);
// Получаем ключевые слова для файла
getKeywords('example.txt');
// Удаляем файл
removeFile('example.txt');
// Получаем файлы по ключевым словам
getFilesByKeywords(['keyword1', 'keyword2'], 5, 'Downgrade', 2);