forked from geolba/tethys.frontend
- Code cleaning for OpenSearch
- Added comments - Facets menu small change
This commit is contained in:
parent
50ab318854
commit
6f1b9f4c5f
5 changed files with 264 additions and 389 deletions
161
src/services/dataset.service - Tests with OpenSearch
Normal file
161
src/services/dataset.service - Tests with OpenSearch
Normal file
|
@ -0,0 +1,161 @@
|
|||
// public facetedSearchOPEN(
|
||||
// suggestion: Suggestion | string,
|
||||
// activeFilterCategories: ActiveFilterCategories,
|
||||
// openCore: string,
|
||||
// openHost: string,
|
||||
// start?: string, // Starting page
|
||||
// ): Observable<OpenSearchResponse> {
|
||||
// // OpenSearch endpoint
|
||||
// const host = openHost;
|
||||
// const path = "/" + openCore + "/_search";
|
||||
// const base = host + path;
|
||||
|
||||
// // Constructing Filters Based on Active Filter Categories
|
||||
// const filters = Object.entries(activeFilterCategories).map(([category, values]) => {
|
||||
// if (category === "language" || category === "year") {
|
||||
// return { terms: { [category]: values } };
|
||||
// } else {
|
||||
// return { terms: { [`${category}.keyword`]: values } };
|
||||
// }
|
||||
// });
|
||||
// console.log("filters:", filters);
|
||||
|
||||
// // Determine search term and query fields based on the suggestion type
|
||||
// let query;
|
||||
// if (typeof suggestion === "string") { // If suggestion is a string, append a wildcard (*) for partial matches
|
||||
// const lowercaseTerm = suggestion.toLowerCase()
|
||||
// query = {
|
||||
// bool: {
|
||||
// should: [
|
||||
// { match: { title: { query: suggestion, fuzziness: "AUTO", boost: 3 } } },
|
||||
// { match: { author: { query: suggestion, fuzziness: "AUTO", boost: 2 } } },
|
||||
// { match: { subjects: { query: suggestion, fuzziness: "AUTO", boost: 1 } } },
|
||||
// { wildcard: { title: { value: `${lowercaseTerm}*`, boost: 3 } } },
|
||||
// { wildcard: { author: { value: `${lowercaseTerm}*`, boost: 2 } } },
|
||||
// { wildcard: { subjects: { value: `${lowercaseTerm}*`, boost: 1 } } }
|
||||
// ],
|
||||
// minimum_should_match: 1
|
||||
// }
|
||||
// };
|
||||
// } else if (suggestion instanceof Suggestion) { // If suggestion is a Suggestion object, form a specific query
|
||||
// query = {
|
||||
// match: {
|
||||
// [suggestion.type]: {
|
||||
// query: suggestion.value,
|
||||
// operator: 'and' // all the terms in the query must be present in the field e.g. if is a title, the complete title
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
// }
|
||||
|
||||
// // Set default value for start if not provided
|
||||
// const startValue = start ? parseInt(start) : 0;
|
||||
|
||||
// // console.log(activeFilterCategories);
|
||||
// // console.log("mainQuery:", mainQuery);
|
||||
|
||||
// // Construct the body of the OpenSearch query
|
||||
// const body = {
|
||||
|
||||
// query: {
|
||||
// bool: {
|
||||
// must: [
|
||||
// mainQuery, // Ensure the main query must be satisfied
|
||||
// ...filters // Ensure all filters must be satisfied
|
||||
// ]
|
||||
// }
|
||||
// },
|
||||
|
||||
// // // WORKS // Expected: 12 results
|
||||
// // query: {
|
||||
// // bool: {
|
||||
// // "must": [
|
||||
// // { "term": { "language": "en" } },
|
||||
// // { "term": { "subjects.keyword": "Lower Austria" } },
|
||||
// // { "term": { "subjects.keyword": "counting data" } }
|
||||
// // ],
|
||||
// // }
|
||||
// // },
|
||||
|
||||
// // // THIS WORKS: // Expected: 19 results
|
||||
// // query: {
|
||||
// // bool: {
|
||||
// // must: [
|
||||
// // { "match": { "title": "Blatt" } },
|
||||
// // { "term": { "subjects": "bayern" } }
|
||||
// // ],
|
||||
// // }
|
||||
// // },
|
||||
|
||||
// // // WORKS // Expected: 4 results
|
||||
// // query: {
|
||||
// // bool: {
|
||||
// // "must": [
|
||||
// // { "match": { "title": "blatt" } },
|
||||
// // { "term": { "subjects": "bayern" } },
|
||||
// // { "term": { "subjects": "salzburg" } }
|
||||
// // ],
|
||||
// // }
|
||||
// // },
|
||||
|
||||
// // // WORKS // Expected: 2 results
|
||||
// // query: {
|
||||
// // bool: {
|
||||
// // "must": [
|
||||
// // { "match": { "title": "blatt" } },
|
||||
// // { "term": { "subjects": "ungarn" } },
|
||||
// // { "term": { "subjects": "steiermark" } }
|
||||
// // ],
|
||||
// // }
|
||||
// // },
|
||||
|
||||
// // WORKS // Expected: 12 results
|
||||
// query: {
|
||||
// bool: {
|
||||
// "must": [
|
||||
// { "term": { "language": "en" } },
|
||||
// { "term": { "subjects.keyword": "Lower Austria" } },
|
||||
// { "term": { "subjects.keyword": "counting data" } }
|
||||
// ],
|
||||
// "should": [
|
||||
// { match: { title: { query: "halger", fuzziness: "AUTO", boost: 3 } } },
|
||||
// { match: { author: { query: "halger", fuzziness: "AUTO", boost: 2 } } },
|
||||
// { match: { subjects: { query: "halger", fuzziness: "AUTO", boost: 1 } } },
|
||||
// { wildcard: { title: { value: "halger", boost: 3 } } },
|
||||
// { wildcard: { author: { value: "halger", boost: 2 } } },
|
||||
// { wildcard: { subjects: { value: "halger", boost: 1 } } }
|
||||
// ],
|
||||
// minimum_should_match: 1
|
||||
// }
|
||||
// },
|
||||
|
||||
// size: 10,
|
||||
// from: startValue,
|
||||
// sort: [{ _score: { order: "desc" } }],
|
||||
// track_scores: true,
|
||||
|
||||
// aggs: {
|
||||
// subjects: { terms: { field: "subjects.keyword", size: 1000 } },
|
||||
// language: { terms: { field: "language" } },
|
||||
// author: { terms: { field: "author.keyword", size: 1000 } },
|
||||
// year: { terms: { field: "year", size: 100 } }
|
||||
// },
|
||||
|
||||
// highlight: {
|
||||
// fields: {
|
||||
// title: {},
|
||||
// author: {},
|
||||
// subjects: {}
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
|
||||
// console.log("mainQuery:", mainQuery);
|
||||
// console.log("filters:", filters);
|
||||
// console.log("body:", body);
|
||||
|
||||
// // Make API call to OpenSearch and return the result
|
||||
// const stations = api.post<OpenSearchResponse>(base, body);
|
||||
|
||||
// return stations;
|
||||
// }
|
Loading…
Add table
editor.link_modal.header
Reference in a new issue