Skip to content
Snippets Groups Projects
Commit 6a57a941 authored by esikkala's avatar esikkala
Browse files

JSON configs for full text search

parent 2dce0118
No related branches found
No related tags found
No related merge requests found
{ {
"id": "fullTextSearch", "id": "fullTextSearch",
"endpoint": {
"url": "https://ldf.fi/mmm/sparql",
"useAuth": false,
"prefixesFile": "SparqlQueriesPrefixes.js"
},
"sparqlQueriesFile": "SparqlQueriesFullTextSearch.js", "sparqlQueriesFile": "SparqlQueriesFullTextSearch.js",
"propertiesQueryBlock": "fullTextSearchProperties", "propertiesQueryBlock": "fullTextSearchProperties",
"hideCardOnFrontPage": true, "hideCardOnFrontPage": true,
......
...@@ -210,7 +210,7 @@ app.get(`${apiPath}/full-text-search`, async (req, res, next) => { ...@@ -210,7 +210,7 @@ app.get(`${apiPath}/full-text-search`, async (req, res, next) => {
const data = await queryJenaIndex({ const data = await queryJenaIndex({
backendSearchConfig, backendSearchConfig,
queryTerm: req.query.q, queryTerm: req.query.q,
resultClass: 'jenaText', resultClass: 'fullTextSearch',
resultFormat: 'json' resultFormat: 'json'
}) })
res.json(data) res.json(data)
......
import { has } from 'lodash'
import { runSelectQuery } from './SparqlApi' import { runSelectQuery } from './SparqlApi'
import { fullTextQuery } from './SparqlQueriesGeneral' import { fullTextQuery } from './SparqlQueriesGeneral'
import { makeObjectList } from './Mappers' import { makeObjectList } from './Mappers'
...@@ -10,16 +9,10 @@ export const queryJenaIndex = async ({ ...@@ -10,16 +9,10 @@ export const queryJenaIndex = async ({
resultFormat resultFormat
}) => { }) => {
let q = fullTextQuery let q = fullTextQuery
const config = backendSearchConfig[resultClass] const perspectiveConfig = backendSearchConfig[resultClass]
let endpoint const { endpoint, propertiesQueryBlock } = perspectiveConfig
if (has(config, 'endpoint')) {
endpoint = config.endpoint
} else {
endpoint = backendSearchConfig[config.perspectiveID].endpoint
}
const { properties } = config
q = q.replace('<QUERY>', `(?id ?score) text:query ('${queryTerm.toLowerCase()}' 2000) .`) 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({ const results = await runSelectQuery({
query: endpoint.prefixes + q, query: endpoint.prefixes + q,
endpoint: endpoint.url, endpoint: endpoint.url,
......
...@@ -13,6 +13,11 @@ export const createBackendSearchConfig = async () => { ...@@ -13,6 +13,11 @@ export const createBackendSearchConfig = async () => {
const perspectiveConfig = JSON.parse(perspectiveConfigJSON) const perspectiveConfig = JSON.parse(perspectiveConfigJSON)
const { sparqlQueriesFile } = perspectiveConfig const { sparqlQueriesFile } = perspectiveConfig
const sparqlQueries = await import(`../sparql/${portalID}/sparql_queries/${sparqlQueriesFile}`) 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') { if (perspectiveConfig.searchMode === 'faceted-search') {
// handle default resultClass which is same as perspectiveID // handle default resultClass which is same as perspectiveID
const { paginatedResultsConfig, instanceConfig } = perspectiveConfig.resultClasses[perspectiveID] const { paginatedResultsConfig, instanceConfig } = perspectiveConfig.resultClasses[perspectiveID]
...@@ -22,9 +27,6 @@ export const createBackendSearchConfig = async () => { ...@@ -22,9 +27,6 @@ export const createBackendSearchConfig = async () => {
const instancePagePropertiesQueryBlock = sparqlQueries[instancePagePropertiesQueryBlockID] const instancePagePropertiesQueryBlock = sparqlQueries[instancePagePropertiesQueryBlockID]
paginatedResultsConfig.propertiesQueryBlock = paginatedResultsPropertiesQueryBlock paginatedResultsConfig.propertiesQueryBlock = paginatedResultsPropertiesQueryBlock
instanceConfig.propertiesQueryBlock = instancePagePropertiesQueryBlock instanceConfig.propertiesQueryBlock = instancePagePropertiesQueryBlock
const { prefixesFile } = perspectiveConfig.endpoint
const { prefixes } = await import(`../sparql/${portalID}/sparql_queries/${prefixesFile}`)
perspectiveConfig.endpoint.prefixes = prefixes
// handle other resultClasses // handle other resultClasses
for (const resultClass in perspectiveConfig.resultClasses) { for (const resultClass in perspectiveConfig.resultClasses) {
if (resultClass === perspectiveID) { continue } if (resultClass === perspectiveID) { continue }
...@@ -57,6 +59,11 @@ export const createBackendSearchConfig = async () => { ...@@ -57,6 +59,11 @@ export const createBackendSearchConfig = async () => {
perspectiveConfig.datasets[dataset].resultQuery = sparqlQueries.federatedSearchSparqlQueries[dataset].resultQuery 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 backendSearchConfig[perspectiveID] = perspectiveConfig
} }
// console.log(backendSearchConfig.perspective1.resultClasses.placesMsMigrations.postprocess.func) // console.log(backendSearchConfig.perspective1.resultClasses.placesMsMigrations.postprocess.func)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment