summaryrefslogtreecommitdiff
path: root/searx/engines/opensemantic.py
blob: 03b01df4308ea437819e76a0a46ca4130a344a06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# SPDX-License-Identifier: AGPL-3.0-or-later
"""Open Semantic Search

"""

from json import loads
from urllib.parse import quote
from dateutil import parser

# about
about = {
    "website": 'https://www.opensemanticsearch.org/',
    "wikidata_id": None,
    "official_api_documentation": 'https://www.opensemanticsearch.org/dev',
    "use_official_api": True,
    "require_api_key": False,
    "results": 'JSON',
}

base_url = 'http://localhost:8983/solr/opensemanticsearch/'
search_string = 'query?q={query}'


def request(query, params):
    search_path = search_string.format(
        query=quote(query),
    )
    params['url'] = base_url + search_path
    return params


def response(resp):
    results = []
    data = loads(resp.text)
    docs = data.get('response', {}).get('docs', [])

    for current in docs:
        item = {}
        item['url'] = current['id']
        item['title'] = current['title_txt_txt_en']
        if current.get('content_txt'):
            item['content'] = current['content_txt'][0]
        item['publishedDate'] = parser.parse(current['file_modified_dt'])
        results.append(item)

    return results