Document directory
- Data submodule
- Data Structure submodule
- Entity
- IO
- Net
- Serialization
- Threading
- Cache
- Data
- DBAdapter
- Global
- Index
- Query
- Right
- Service
- SFQL
- Store
- StoredProcedure
HubbleDotNet already has many users, but most of them are still at the usage level. There are not many people who really study and understand HubbleDotNet deeply. As an open-source project, HubbleDotNet not only provides application requirements, but also provides its own code for developers who want to understand information retrieval and underlying software development technologies. To help developers interested in this aspect read and understand the HubbleDotNet code, I will publish the software design architecture of HubbleDotNet for your reference. The Chinese community of HubbleDotNet is not very active yet. I am answering questions from other netizens. I hope that after having a deep understanding of the internal mechanism of HubbleDotNet, more people can participate in the construction of this community.
Software Architecture
As shown in: the software architecture of HubbleDotNet includes the following modules:
1. Hubble. Framework
2. Hubble. Core
3. Hubble. Analysis
4. Hubble. SQLClient
5. QueryAnalyzer
6. HubbleTask
Below I will introduce these modules respectively
Hubble. Framework
This module supports HubbleDotNet core code to run underlying algorithms. This module includes Data, Entity, IO, and other sub-modules, which provide different functions. The following describes some major sub-modules:
Data submodule
This module mainly provides some database access providers. Currently, providers of OLEDB, SQLSERVER, and SQLITE are included.
Data Structure submodule
This module includes some basic data structures, such
DFA)
Cache (Cache generic class)
FingerPirntDictionary (Information fingerprint dictionary)
HeapSort (heap sorting, including some heap sorting algorithms)
VInt (variable bytecode compression for Int sequences)
VLong (variable bytecode compression for Long series)
QuickSort (quick sorting, including some quick sorting algorithms)
There are also some algorithms. I will not list them here. If you are interested, you can directly look at the code.
Entity
This submodule provides some entity classes required for Core algorithms.
IO
This submodule provides class encapsulation for IO operations. Different from the. net IO module, this module provides some advanced application-oriented class packages, such as log files and block memory streams.
Net
This sub-module provides class encapsulation for network access. The remote access and Distributed Query of HubbleDotNet depend on the classes provided in this module.
Serialization
This submodule provides custom serialization classes required by some core algorithms. serialization of inverted indexes depends on the support of this module.
Threading
This submodule provides some thread synchronization and management functions under multiple threads. Such as message queue, multi-thread computing, and shared exclusive lock.
Hubble. Core
This module is the core module of the entire HubbleDotNet software system. All core information retrieval algorithms are implemented in this module. This module also has many sub-modules.
Cache
This submodule is used to manage the Query Cache)
Data
This sub-module is the business logic part of the Core module. All operations such as Insert, Update, and Delete are implemented in this sub-module.
DBAdapter
This sub-module provides data adapter interfaces and some database adapters that come with HubbleDotNet. The database adapter is an interface for interaction between HubbleDotNet and relational databases. Any data source can be connected to HubbleDotNet by implementing the IDBAdapter interface. For how to create and install your own database adapter, see connect to an Oracle database
Global
This submodule is responsible for global configuration and some global methods.
Index
This sub-module is responsible for inverted indexing of the full text. All the index algorithms are implemented in this sub-module.
Query
This submodule implements various search algorithms. All search algorithms such as Match, Contains, and Like are implemented in this submodule.
Right
This submodule completes user permission management and authentication.
Service
This sub-module implements some background services, including the background service call entry for the core functions of HubbleDotNet and the background service of Task Schedule. The portal of the entire background part is in this module.
SFQL
This submodule parses the SFQL structured full-text query language. All SQL statements are parsed in this module. This module also includes several sub-modules, including lexical analysis, syntax analysis, and semantic analysis.
Store
This sub-module is responsible for index storage operations. Read/write and optimization of inverted indexes are completed in this submodule.
StoredProcedure
This sub-module contains all system stored procedures.
Hubble. Analysis
This module implements the interfaces of the word divider and HubbleDotNet. HubbleDotNet is a developed system. You can use the English word segmentation, pangu word segmentation, and simple word segmentation that comes with HubbleDotNet. You can also install the self-developed word divider through the IAnalyzer interface. I will provide an article on the installation of the custom word divider in a few days.
Hubble. SQLClient
This is the terminal class of the HubbleDotNet client. Its functions are similar to those of the SqlClient of Ado. Net, providing client support for accessing the HubbleDotNet server. This module includes
HubbleCommand and HubbleConnection are two data classification classes, which are respectively from System. data. common. dbCommand and System. data. common. dbConnection inherits two base classes, including the call method and ADO. other providers of. Net, such as SQL SERVER's SqlCommand and SqlConnection, are used in a similar way and are very easy to use.
In addition, the Hubble. SQLClient module also provides a sub-module for data caching on the client to provide system concurrency and query speed.
QueryAnalyzer
This is a query tool provided by HubbleDotNet. It helps you maintain and manage HubbleDotNet servers. This query tool does not use any special interface. It is a standard HubbleDotNet client application. Many HubbleDotNet functions can be implemented by referring to the code of this module.
HubbleTask
HubbleTask.exe is the call container for Core code on the Service side. Because Hubble. Core. dll is a dynamic library, it must be called through an exe file before it can be used. This module does not have many special functions, but is responsible for calling Hubble. Core. dll.
HubbleService
HubbleService.exe is the backend service of HubbleDotNet. This executable file is more simple, and only hubbletask.exe is responsible for starting and disabling HubbleDotNet.
Return to HubbleDotNet technical details