Search backend refactor with typesense impl (#5528)
* initial elasticsearch impl * working elastic cluster * replace SearchError with ApiError for preparation of search backend * start factoring meili out to trait * move meili to backend * update routes to use search backend trait * wip * Update projects.rs * search backend is only init'd once in config * wip * wip: backend agnostic * change search internal routes to delegate to backend * initial elasticsearch impl * fix filtering * elastic impl * refactor indexing into its own module * clean up elastic code * fix ci * fix tests * fix elastic health check * fix up env rebase * fix compile * dummy commit to update github pr * Fix rebase * Elastic basic https auth * Fix duplicate projects showing up * Fix up tests * Replace search `ApiErrors` with `eyre::Reports`, propagate background task errors * clean up agents files * make index chunk size configurable * make `match_phrase` in elastic case-insensitive * use current/next indices and swap between them * test case for error body * Fix failing case * da merge * factor out common stuff from search backends * allow fetching hit metadata from search results * allow customising elasticsearch search config * bit of docs * add mappings to indices for elastic * Implement Typesense * wip * fix up some sort fields stuff * use different approach to filterable field sets * remove a bunch of search fields which weren't used for filtering * bucket text matches * Bucketing by text_match for typesense * fix tombi lint * fix some sentry errors and dont prioritise 2+ term matches * tweak ts query settings * expose some more search settings * query sort changes * small fixes * should fix pagination stuff * fix healthcheck maybe * ragebait ci * tests * tests * revert environment
This commit is contained in:
@@ -101,7 +101,7 @@ async fn search_projects() {
|
||||
async move {
|
||||
let projects = api
|
||||
.search_deserialized(
|
||||
Some(&format!("\"&{test_name}\"")),
|
||||
Some(&format!("&{test_name}")),
|
||||
Some(facets.clone()),
|
||||
USER_USER_PAT,
|
||||
)
|
||||
|
||||
@@ -316,7 +316,7 @@ async fn search_projects() {
|
||||
async move {
|
||||
let projects = api
|
||||
.search_deserialized(
|
||||
Some(&format!("\"&{test_name}\"")),
|
||||
Some(&format!("&{test_name}")),
|
||||
Some(facets.clone()),
|
||||
USER_USER_PAT,
|
||||
)
|
||||
@@ -337,7 +337,7 @@ async fn search_projects() {
|
||||
// A couple additional tests for the search type returned, making sure it is properly translated back
|
||||
let client_side_required = api
|
||||
.search_deserialized(
|
||||
Some(&format!("\"&{test_name}\"")),
|
||||
Some(&format!("&{test_name}")),
|
||||
Some(json!([["client_side:required"]])),
|
||||
USER_USER_PAT,
|
||||
)
|
||||
@@ -348,7 +348,7 @@ async fn search_projects() {
|
||||
|
||||
let server_side_required = api
|
||||
.search_deserialized(
|
||||
Some(&format!("\"&{test_name}\"")),
|
||||
Some(&format!("&{test_name}")),
|
||||
Some(json!([["server_side:required"]])),
|
||||
USER_USER_PAT,
|
||||
)
|
||||
@@ -359,7 +359,7 @@ async fn search_projects() {
|
||||
|
||||
let client_side_unsupported = api
|
||||
.search_deserialized(
|
||||
Some(&format!("\"&{test_name}\"")),
|
||||
Some(&format!("&{test_name}")),
|
||||
Some(json!([["client_side:unsupported"]])),
|
||||
USER_USER_PAT,
|
||||
)
|
||||
@@ -370,7 +370,7 @@ async fn search_projects() {
|
||||
|
||||
let client_side_optional_server_side_optional = api
|
||||
.search_deserialized(
|
||||
Some(&format!("\"&{test_name}\"")),
|
||||
Some(&format!("&{test_name}")),
|
||||
Some(json!([["client_side:optional"], ["server_side:optional"]])),
|
||||
USER_USER_PAT,
|
||||
)
|
||||
@@ -384,7 +384,7 @@ async fn search_projects() {
|
||||
// over all versions of a project
|
||||
let game_versions = api
|
||||
.search_deserialized(
|
||||
Some(&format!("\"&{test_name}\"")),
|
||||
Some(&format!("&{test_name}")),
|
||||
Some(json!([["categories:forge"], ["versions:1.20.2"]])),
|
||||
USER_USER_PAT,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user