mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	Add Solr engine
This commit is contained in:
		
							parent
							
								
									9292571304
								
							
						
					
					
						commit
						ff527e2681
					
				
					 3 changed files with 86 additions and 0 deletions
				
			
		
							
								
								
									
										1
									
								
								Makefile
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								Makefile
									
										
									
									
									
								
							|  | @ -192,6 +192,7 @@ PYLINT_FILES=\ | |||
| 	searx/engines/google_images.py \
 | ||||
| 	searx/engines/mediathekviewweb.py \
 | ||||
| 	searx/engines/solidtorrents.py \
 | ||||
| 	searx/engines/solr.py \
 | ||||
| 	searx/engines/google_scholar.py \
 | ||||
| 	searx/engines/yahoo_news.py \
 | ||||
| 	searx/engines/apkmirror.py \
 | ||||
|  |  | |||
							
								
								
									
										74
									
								
								searx/engines/solr.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								searx/engines/solr.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,74 @@ | |||
| # SPDX-License-Identifier: AGPL-3.0-or-later | ||||
| """ | ||||
|  Solr | ||||
| """ | ||||
| 
 | ||||
| # pylint: disable=global-statement, missing-function-docstring | ||||
| 
 | ||||
| from json import loads | ||||
| from urllib.parse import urlencode | ||||
| from searx.exceptions import SearxEngineAPIException | ||||
| 
 | ||||
| 
 | ||||
| base_url = 'http://localhost:8983' | ||||
| collection = '' | ||||
| rows = 10 | ||||
| sort = '' # sorting: asc or desc | ||||
| field_list = 'name' # list of field names to display on the UI | ||||
| default_fields = '' # default field to query | ||||
| query_fields = '' # query fields | ||||
| _search_url = '' | ||||
| paging = True | ||||
| 
 | ||||
| 
 | ||||
| def init(_): | ||||
|     if collection == '': | ||||
|         raise ValueError('collection cannot be empty') | ||||
| 
 | ||||
|     global _search_url | ||||
|     _search_url = base_url + '/solr/' + collection + '/select?{params}' | ||||
| 
 | ||||
| 
 | ||||
| def request(query, params): | ||||
|     query_params = {'q': query, 'rows': rows} | ||||
|     if field_list != '': | ||||
|         query_params['fl'] = field_list | ||||
|     if query_fields != '': | ||||
|         query_params['qf'] = query_fields | ||||
|     if default_fields != '': | ||||
|         query_params['df'] = default_fields | ||||
|     if sort != '': | ||||
|         query_params['sort'] = sort | ||||
| 
 | ||||
|     if 'pageno' in params: | ||||
|         query_params['start'] = rows * (params['pageno'] - 1) | ||||
| 
 | ||||
|     params['url'] = _search_url.format(params=urlencode(query_params)) | ||||
| 
 | ||||
|     return params | ||||
| 
 | ||||
| 
 | ||||
| def response(resp): | ||||
|     resp_json = __get_response(resp) | ||||
| 
 | ||||
|     results = [] | ||||
|     for result in resp_json['response']['docs']: | ||||
|         r = {key: str(value) for key, value in result.items()} | ||||
|         if len(r) == 0: | ||||
|             continue | ||||
|         r['template'] = 'key-value.html' | ||||
|         results.append(r) | ||||
| 
 | ||||
|     return results | ||||
| 
 | ||||
| 
 | ||||
| def __get_response(resp): | ||||
|     try: | ||||
|         resp_json = loads(resp.text) | ||||
|     except Exception as e: | ||||
|         raise SearxEngineAPIException("failed to parse response") from e | ||||
| 
 | ||||
|     if 'error' in resp_json: | ||||
|         raise SearxEngineAPIException(resp_json['error']['msg']) | ||||
| 
 | ||||
|     return resp_json | ||||
|  | @ -943,6 +943,17 @@ engines: | |||
| #    api_client_id : ******* | ||||
| #    api_client_secret : ******* | ||||
| 
 | ||||
| #  - name : solr | ||||
| #    engine : solr | ||||
| #    shortcut : slr | ||||
| #    base_url : http://localhost:8983 | ||||
| #    collection : collection_name | ||||
| #    sort : '' # sorting: asc or desc | ||||
| #    field_list : '' # comma separated list of field names to display on the UI | ||||
| #    default_fields : '' # default field to query | ||||
| #    query_fields : '' # query fields | ||||
| #    enable_http : True | ||||
| 
 | ||||
|   - name : startpage | ||||
|     engine : startpage | ||||
|     shortcut : sp | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Noémi Ványi
						Noémi Ványi