Джин используется в качестве HTTP -структуры, GRPC используется в качестве RPC -структуры и т. Д. Используется в качестве обнаружения услуг.
Общая служба разделена на用户模块,收藏夹模块,索引平台,搜索引擎(文字模块) и搜索引擎(图片模块) .
Распределенные данные Crawler Crawls и отправляет их в кластер Kafka, а затем входит в базу данных для потребления. (Хотя гусеница еще не написала, это не мешает мне рисовать пирожные ...)
Текстовый поиск модулей поисковой системы настраивается отдельно с использованием Boltdb для хранения индекса, MapReduce ускоряет индексное здание и использует roaring bitmap для хранения индекса.
Используйте Trie Tree для реализации ассоциации входа (планируется добавить Ассоциацию вспомогательной модели алгоритма модели).
Поиск изображения использует RESNET50 для выполнения векторизованного запроса + запроса базы данных вектора Milvus или Faiss (я начал ... Deeplearning слишком сложно ...).
Поддерживает множественные отзывы, отзыв обратного индекса в GO и векторный отзыв в Python. Соединение вызывается через GRPC для выполнения Fusion.
Поддерживает TF-IDF, BM25 и другую сортировку алгоритма.
??
все в реагировании, но все еще кодирует
React-Tangseng
Будущее планирование
Связанный с архитектурой
Представьте предотвращение предохранителя
Представьте Jaeger для полного отслеживания ссылок (отслеживание Go на Python)
Представьте Skywalking или Prometheus для мониторинга
Извлеките INIT из DAO и используйте ключ для получения соответствующего экземпляра базы данных
Разделение горячих и холодных данных (см. Схему ES, ключ состоит в том, чтобы судить о горячих и холодных стандартах, которые могут быть записаны в промежуточном программном обеспечении?)
В настоящее время MySQL достаточно для хранения индекса вперед, но он может быть непосредственно использован для OLAP за один шаг.
Функциональный связан
Слишком медленно создавать индекс.
Сжатие индекса, инвертированный индекс, то есть инвертированная таблица индекса, впоследствии изменение, чтобы сохранить смещение, используйте MMAP
Расчет корреляции следует учитывать, TFIDF, BM25
Используйте деревья префикса для хранения информации об ассоциации
Кодированное сжатое префиксное дерево Huffman
При создании индекса адрес передачи файла изменяется в потоку передачи файла
Python представляет модель BET для выполнения рекомендаций по сегментации слов и предоставляет интерфейс GRPC
Хранение инвертированных и тройных деревьев.
Вектор слов
PageRank
Процесс сборки и отзывов разделения Trie Tree
Добавить слово причастие в IK Word Причастие
Создайте индексную платформу, отдельные вычисления и хранение, отдельный индекс и отзыв
И разница в операции (операция битов)
Страница
Сортировка
Правильный запрос ввода, такой как "lu jiazui" -> "lu jiazui"
Введите запись, чтобы связать ее, например, «Dongfang Ming» -> «Dongfang Pearl»
В настоящее время это метод индексации на основе блоков.
Добавить динамическую индексацию на основе предыдущего (я не знаю, можно ли реализовать предыдущий ...)
Реформировать обратный индекс и использовать ревущий растровый карту для хранения DOCID (очень сложно)
Реализовать класс TF
После поиска кэш не очищается, в результате чего результат объединяется с предыдущим.
Оптимизация сортировщика
Начните быстро
Среда начинается!
make env-up
Небольшой набор данных в source_data/movies_data.csv
Питон начинается!
Убедитесь, что на компьютере установлен Python, убедитесь, что версия Python> = 3.9, моя версия - 3.10.2
python --version
Установите среду Venv
python -m venv venv
Активировать среду Venv Python
macOS:
source venv/bin/activate
Windows:
Я буду совместимы после того, как закончу очистить диск C ... Я еще не бежал на победе ...
Установите сторонние зависимости
pipinstall-rrequirements . txt
Голанг начинает!
Golang версия> = Go 1.16. Моя версия Go - 1.18.6
Скачать сторонний пакет зависимости
go mod tidy
Выполнять в каталоге
make run-xxx(user,favortie ...)
# e.g:# make run-user# make run-favorite# 具体看makefile文件
Вклад с открытым исходным кодом
Пожалуйста, проверьте CONTRIBUTING_CN.md перед отправкой PR