MarginaliaSearch/code/services-application/search-service/readme.md

40 lines
1.4 KiB
Markdown
Raw Normal View History

2023-03-04 13:00:46 +00:00
# Search Service
This service handles search traffic and is the service
you're most directly interacting with when visiting
2025-01-08 12:04:39 +00:00
[marginalia-search.com](https://marginalia-search.com).
2023-03-04 13:00:46 +00:00
2023-03-22 15:59:38 +00:00
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.
2025-01-08 12:04:39 +00:00
The UI is built using [JTE templates](https://jte.gg/syntax/) and the [Jooby framework](https://jooby.io), primarily using
its MVC facilities.
When developing, it's possible to set up a mock version of the UI by running
the gradle command
```$ ./gradlew paperDoll -i```
The UI will be available at http://localhost:9999/, and has hot reloading of JTE classes
and static resources.
2023-03-22 16:02:03 +00:00
![image](../../../doc/diagram/search-service-map.svg)
2023-03-22 16:02:03 +00:00
2023-03-04 13:00:46 +00:00
## Central classes
* [SearchService](java/nu/marginalia/search/SearchService.java) receives requests and delegates to the
2023-03-04 13:00:46 +00:00
appropriate services.
* [CommandEvaluator](java/nu/marginalia/search/command/CommandEvaluator.java) interprets a user query and acts
2023-03-04 13:00:46 +00:00
upon it, dealing with special operations like `browse:` or `site:`.
* [SearchQueryIndexService](java/nu/marginalia/search/svc/SearchQueryIndexService.java) passes a parsed search query to the index service, and
2023-03-04 13:00:46 +00:00
then decorates the search results so that they can be rendered.
## See Also
2023-03-22 15:59:38 +00:00
* [features-search](../../features-search/)