mirror of
https://github.com/searxng/searxng
synced 2024-01-01 19:24:07 +01:00
change: themes.simple.autocompleter.MinChars 4 -> 0
add: settings.server.autocomplete_limit add settings.server.autocomplete_limit to SCHEMA add limit to autocomplete.py change: default value of autocomplete_limit 0-50 fix: pylint C0325 R1719 R1735
This commit is contained in:
parent
e22dc2ba36
commit
92c9ee31a0
4 changed files with 38 additions and 2 deletions
|
@ -18,6 +18,12 @@ from searx.exceptions import SearxEngineResponseException
|
|||
# a fetch_supported_languages() for XPath engines isn't available right now
|
||||
# _brave = ENGINES_LANGUAGES['brave'].keys()
|
||||
|
||||
_autocomplete_limit = settings['server']['autocomplete_limit']
|
||||
_autocomplete_limit_enabled = bool(_autocomplete_limit)
|
||||
# Make sure _autocomplete_limit['overwrite'] is always a dict.
|
||||
if not hasattr(_autocomplete_limit, 'get'):
|
||||
_autocomplete_limit['overwrite'] = {}
|
||||
|
||||
|
||||
def get(*args, **kwargs):
|
||||
if 'timeout' not in kwargs:
|
||||
|
@ -158,9 +164,24 @@ backends = {
|
|||
}
|
||||
|
||||
|
||||
def meet_limit(backend_name, query) -> bool:
|
||||
if _autocomplete_limit_enabled:
|
||||
backend_limit = _autocomplete_limit['overwrite'].get(
|
||||
backend_name, _autocomplete_limit
|
||||
)
|
||||
limit_min = backend_limit.get("min", 0)
|
||||
limit_max = backend_limit.get("max", 0x7FFFFFFF)
|
||||
|
||||
return limit_min <= len(query) <= limit_max
|
||||
|
||||
# If autocomplete_limit is not configured,
|
||||
# allow all autocomplete requests.
|
||||
return True
|
||||
|
||||
|
||||
def search_autocomplete(backend_name, query, lang):
|
||||
backend = backends.get(backend_name)
|
||||
if backend is None:
|
||||
if backend is None or not meet_limit(backend_name, query):
|
||||
return []
|
||||
|
||||
try:
|
||||
|
|
|
@ -47,6 +47,20 @@ server:
|
|||
base_url: false # Possible values: false or "https://example.org/location".
|
||||
limiter: false # rate limit the number of request on the instance, block some bots
|
||||
|
||||
# The autocompleter will only return suggestions when:
|
||||
# min < len(query) < max
|
||||
# otherwise it will simply return a null list.
|
||||
# {{ backend_name }} can be any existing autocomplete backends.
|
||||
# The values settings in this section will overwrite the default
|
||||
# value when use the corresponding backend.
|
||||
autocomplete_limit:
|
||||
min: 0
|
||||
max: 50
|
||||
# overwrite:
|
||||
# "{{ backend_name }}":
|
||||
# min: 4
|
||||
# max: 16
|
||||
|
||||
# If your instance owns a /etc/searxng/settings.yml file, then set the following
|
||||
# values there.
|
||||
|
||||
|
|
|
@ -170,6 +170,7 @@ SCHEMA = {
|
|||
'http_protocol_version': SettingsValue(('1.0', '1.1'), '1.0'),
|
||||
'method': SettingsValue(('POST', 'GET'), 'POST'),
|
||||
'default_http_headers': SettingsValue(dict, {}),
|
||||
'autocomplete_limit': SettingsValue(dict, {"min":0, "max": 50}),
|
||||
},
|
||||
'redis': {
|
||||
'url': SettingsValue(str, 'unix:///usr/local/searxng-redis/run/redis.sock?db=0'),
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
"Content-type": "application/x-www-form-urlencoded",
|
||||
"X-Requested-With": "XMLHttpRequest"
|
||||
},
|
||||
MinChars: 4,
|
||||
MinChars: 0,
|
||||
Delay: 300,
|
||||
_Position: function () {},
|
||||
_Open: function () {
|
||||
|
|
Loading…
Add table
Reference in a new issue