diff --git a/src/client/configs/sampo/perspective_configs/search_perspectives/fullTextSearch.json b/src/client/configs/sampo/perspective_configs/search_perspectives/fullTextSearch.json index ad3672b2bc1afcc4487f37f38c2601b9df87966a..72db0289039d05424b6e43d147a6b4dd24891c9a 100644 --- a/src/client/configs/sampo/perspective_configs/search_perspectives/fullTextSearch.json +++ b/src/client/configs/sampo/perspective_configs/search_perspectives/fullTextSearch.json @@ -1,5 +1,10 @@ { "id": "fullTextSearch", + "endpoint": { + "url": "https://ldf.fi/mmm/sparql", + "useAuth": false, + "prefixesFile": "SparqlQueriesPrefixes.js" + }, "sparqlQueriesFile": "SparqlQueriesFullTextSearch.js", "propertiesQueryBlock": "fullTextSearchProperties", "hideCardOnFrontPage": true, diff --git a/src/server/index.js b/src/server/index.js index 635977da5a26e2de3c6905a84129083dd8055e14..1f0f980064e3fd1c5e5e6dc548290863ba5859a4 100644 --- a/src/server/index.js +++ b/src/server/index.js @@ -210,7 +210,7 @@ app.get(`${apiPath}/full-text-search`, async (req, res, next) => { const data = await queryJenaIndex({ backendSearchConfig, queryTerm: req.query.q, - resultClass: 'jenaText', + resultClass: 'fullTextSearch', resultFormat: 'json' }) res.json(data) diff --git a/src/server/sparql/JenaQuery.js b/src/server/sparql/JenaQuery.js index 0693d67f8c7daf3c75f815bc7d3c528c9b83b47e..20d335ea7e5730a17e30043ff4d0a41993edf9d9 100644 --- a/src/server/sparql/JenaQuery.js +++ b/src/server/sparql/JenaQuery.js @@ -1,4 +1,3 @@ -import { has } from 'lodash' import { runSelectQuery } from './SparqlApi' import { fullTextQuery } from './SparqlQueriesGeneral' import { makeObjectList } from './Mappers' @@ -10,16 +9,10 @@ export const queryJenaIndex = async ({ resultFormat }) => { let q = fullTextQuery - const config = backendSearchConfig[resultClass] - let endpoint - if (has(config, 'endpoint')) { - endpoint = config.endpoint - } else { - endpoint = backendSearchConfig[config.perspectiveID].endpoint - } - const { properties } = config + const perspectiveConfig = backendSearchConfig[resultClass] + const { endpoint, propertiesQueryBlock } = perspectiveConfig q = q.replace('<QUERY>', `(?id ?score) text:query ('${queryTerm.toLowerCase()}' 2000) .`) - q = q.replace('<RESULT_SET_PROPERTIES>', properties) + q = q.replace('<RESULT_SET_PROPERTIES>', propertiesQueryBlock) const results = await runSelectQuery({ query: endpoint.prefixes + q, endpoint: endpoint.url, diff --git a/src/server/sparql/Utils.js b/src/server/sparql/Utils.js index a0506833b02e27e68f66bbffee900fbd4df90167..7bc8ef7d8ae12eabc5c29f25ed434e8efb073f84 100644 --- a/src/server/sparql/Utils.js +++ b/src/server/sparql/Utils.js @@ -13,6 +13,11 @@ export const createBackendSearchConfig = async () => { const perspectiveConfig = JSON.parse(perspectiveConfigJSON) const { sparqlQueriesFile } = perspectiveConfig const sparqlQueries = await import(`../sparql/${portalID}/sparql_queries/${sparqlQueriesFile}`) + if (has(perspectiveConfig, 'endpoint')) { + const { prefixesFile } = perspectiveConfig.endpoint + const { prefixes } = await import(`../sparql/${portalID}/sparql_queries/${prefixesFile}`) + perspectiveConfig.endpoint.prefixes = prefixes + } if (perspectiveConfig.searchMode === 'faceted-search') { // handle default resultClass which is same as perspectiveID const { paginatedResultsConfig, instanceConfig } = perspectiveConfig.resultClasses[perspectiveID] @@ -22,9 +27,6 @@ export const createBackendSearchConfig = async () => { const instancePagePropertiesQueryBlock = sparqlQueries[instancePagePropertiesQueryBlockID] paginatedResultsConfig.propertiesQueryBlock = paginatedResultsPropertiesQueryBlock instanceConfig.propertiesQueryBlock = instancePagePropertiesQueryBlock - const { prefixesFile } = perspectiveConfig.endpoint - const { prefixes } = await import(`../sparql/${portalID}/sparql_queries/${prefixesFile}`) - perspectiveConfig.endpoint.prefixes = prefixes // handle other resultClasses for (const resultClass in perspectiveConfig.resultClasses) { if (resultClass === perspectiveID) { continue } @@ -57,6 +59,11 @@ export const createBackendSearchConfig = async () => { perspectiveConfig.datasets[dataset].resultQuery = sparqlQueries.federatedSearchSparqlQueries[dataset].resultQuery } } + if (perspectiveConfig.searchMode === 'full-text-search') { + const queryBlockID = perspectiveConfig.propertiesQueryBlock + const queryBlock = sparqlQueries[queryBlockID] + perspectiveConfig.propertiesQueryBlock = queryBlock + } backendSearchConfig[perspectiveID] = perspectiveConfig } // console.log(backendSearchConfig.perspective1.resultClasses.placesMsMigrations.postprocess.func)