mirror of
https://github.com/MarginaliaSearch/MarginaliaSearch.git
synced 2025-02-24 13:19:02 +00:00
![]() Cleaning out a lot of old junk from the code, and one thing lead to another... * Build is improved, now constructing docker images with 'jib'. Clean build went from 3 minutes to 50 seconds. * The ProcessService's spawning is smarter. Will now just spawn a java process instead of relying on the application plugin's generated outputs. * Project is migrated to GraalVM * gRPC clients are re-written with a neat fluent/functional style. e.g. ```channelPool.call(grpcStub::method) .async(executor) // <-- optional .run(argument); ``` This change is primarily to allow handling ManagedChannel errors, but it turned out to be a pretty clean API overall. * For now the project is all in on zookeeper * Service discovery is now based on APIs and not services. Theoretically means we could ship the same code either a monolith or a service mesh. * To this end, began modularizing a few of the APIs so that they aren't strongly "living" in a service. WIP! Missing is documentation and testing, and some more breaking apart of code. |
||
---|---|---|
.. | ||
src | ||
build.gradle | ||
readme.md |
Search Service
This service handles search traffic and is the service you're most directly interacting with when visiting search.marginalia.nu.
It interprets a "human" query and translates it into a request that gets passed into to the index service, which finds related documents, which this service then ranks and returns to the user.
Central classes
-
SearchService receives requests and delegates to the appropriate services.
-
CommandEvaluator interprets a user query and acts upon it, dealing with special operations like
browse:
orsite:
. -
SearchQueryIndexService passes a parsed search query to the index service, and then decorates the search results so that they can be rendered.