43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								Open Semantic Search
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 @website    https://www.opensemanticsearch.org/
							 | 
						||
| 
								 | 
							
								 @provide-api yes (https://www.opensemanticsearch.org/dev)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								 @using-api  yes
							 | 
						||
| 
								 | 
							
								 @results    JSON
							 | 
						||
| 
								 | 
							
								 @stable     yes
							 | 
						||
| 
								 | 
							
								 @parse      url, title, content, publishedDate
							 | 
						||
| 
								 | 
							
								"""
							 | 
						||
| 
								 | 
							
								from dateutil import parser
							 | 
						||
| 
								 | 
							
								from json import loads
							 | 
						||
| 
								 | 
							
								from urllib.parse import quote
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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
							 |