    // 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;
    // }
