Haga clic aquí para obtener contenido detallado del proyecto
Project General Framework & Functions
Gin se usa como marco HTTP, GRPC se usa como marco RPC, etcd se usa como descubrimiento de servicios.
El servicio general se divide en用户模块,收藏夹模块,索引平台,搜索引擎(文字模块) y搜索引擎(图片模块) .
El rastreador distribuido rastrea los datos y los envía al clúster Kafka, y luego ingresa a la base de datos para consumir. (Aunque el rastreador aún no lo ha escrito, no me impide dibujar pasteles ...)
La búsqueda de texto de los módulos de motor de búsqueda se configura por separado utilizando BoltDB para almacenar el índice, MapReduce acelera el edificio del índice y utiliza roaring bitmap para almacenar el índice.
Use Trie Tree para implementar la asociación de entrada (la asociación de entrada auxiliar del modelo de algoritmo se planea agregar más adelante).
La búsqueda de imágenes utiliza resnet50 para realizar una consulta vectorizada + consulta de la base de datos de Milvus o Faiss Vector (comencé ... el aprendizaje profundo es demasiado difícil ...).
Admite múltiples retiros, recuerdo del índice inverso en GO y recuerdo de vectores en Python. La conexión se llama a través de GRPC para realizar la fusión.
Admite TF-IDF, BM25 y otra clasificación de algoritmos.
?? Dirección frontal
todo en reaccionar, pero aún codificando
reaccionar
Planificación futura
Relacionado con la arquitectura
Introducir el fusible de rebaja
Presente a Jaeger para el seguimiento completo de enlaces (vaya a seguir a Python)
Introducir a Skywalking o Prometheus para el monitoreo
Extraiga el init de DAO y use la clave para obtener la instancia de base de datos relevante
Separación de datos de calor y frío (consulte el esquema ES, la clave es juzgar los estándares de calor y frío, que se pueden escribir en el middleware?)
En la actualidad, MySQL es suficiente para almacenar el índice de avance, pero puede usarse directamente para OLAP en un solo paso.
Funcional relacionado
Es demasiado lento para construir un índice.
Compresión de índice, índice invertido, es decir, tabla de índice invertido, posteriormente cambia para guardar compensación, use MMAP
Se debe considerar el cálculo de la correlación, TFIDF, BM25
Use árboles prefijos para almacenar información de asociación
Árbol de prefijo comprimido codificado por Huffman
Al crear un índice, la dirección de transferencia de archivos se cambia a la transferencia de archivos
Python presenta el modelo BET para realizar palabras de recomendación de segmentación de palabras y proporciona interfaz GRPC
El almacenamiento de un árbol invertido y trie admite un almacenamiento constante de fragmentos de hash
Vector de palabras
carpeta
El proceso de construcción y recuerdo de separar el árbol trie
Agregue el participio de Word al participio de Word IK
Construir una plataforma índice, informática y almacenamiento por separado, índice separado y retiro
Y operación de diferencia (operación de bits)
Paginación
Clasificar
Consulta de entrada correcta, como "Lu Jiazui" -> "Lu Jiazui"
Ingrese la entrada para asociarla, como consejos "Dongfang Ming" -> "Dongfang Pearl"
Actualmente, es un método de indexación basado en bloques.
Agregue la indexación dinámica basada en la anterior (no sé si se puede implementar la anterior ...)
Reforma el índice inverso y usa mapa de bits rugiente para almacenar docid (muy difícil)
Implementar la clase TF
Después de buscar uno, el caché no se borra, lo que resulta en que el resultado se fusione con el anterior.
Optimización del clasificador
Empezar rápidamente
¡Comienza el entorno!
make env-up
El conjunto de datos pequeño está en source_data/movies_data.csv
¡Python comienza!
Asegúrese de que la computadora tenga instalado Python, asegúrese de que la versión de Python> = 3.9, mi versión es 3.10.2
python --version
Instale el entorno VenV
python -m venv venv
Active el entorno Venv Python
macOS:
source venv/bin/activate
Windows:
Seré compatible después de terminar de limpiar la unidad C ... todavía no he corrido en WIN ...
Instalar dependencias de terceros
pipinstall-rrequirements . txt
¡Golang comienza!
Versión de Golang> = GO 1.16. Mi versión Go es 1.18.6
Descargar paquete de dependencia de terceros
go mod tidy
Ejecutar en el directorio
make run-xxx(user,favortie ...)
# e.g:# make run-user# make run-favorite# 具体看makefile文件