Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
searx-engine
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
gargantext
searx-engine
Commits
4e2dae30
Commit
4e2dae30
authored
Jan 10, 2015
by
Thomas Pointhuber
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[enh] add autocompletion for searx-specific strings
parent
29a526ff
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
3 deletions
+85
-3
autocomplete.py
searx/autocomplete.py
+79
-0
query.py
searx/query.py
+1
-1
webapp.py
searx/webapp.py
+5
-2
No files found.
searx/autocomplete.py
View file @
4e2dae30
...
...
@@ -20,6 +20,85 @@ from lxml import etree
from
requests
import
get
from
json
import
loads
from
urllib
import
urlencode
from
searx.languages
import
language_codes
from
searx.engines
import
(
categories
,
engines
,
engine_shortcuts
)
def
searx_bang
(
full_query
):
'''check if the searchQuery contain a bang, and create fitting autocompleter results'''
# check if there is a query which can be parsed
if
len
(
full_query
.
getSearchQuery
())
==
0
:
return
[]
results
=
[]
# check if current query stats with !bang
if
full_query
.
getSearchQuery
()[
0
]
==
'!'
:
if
len
(
full_query
.
getSearchQuery
())
==
1
:
# show some example queries
# TODO, check if engine is not avaliable
results
.
append
(
"!images"
)
results
.
append
(
"!wikipedia"
)
results
.
append
(
"!osm"
)
else
:
engine_query
=
full_query
.
getSearchQuery
()[
1
:]
# check if query starts with categorie name
for
categorie
in
categories
:
if
categorie
.
startswith
(
engine_query
):
results
.
append
(
'!{categorie}'
.
format
(
categorie
=
categorie
))
# check if query starts with engine name
for
engine
in
engines
:
if
engine
.
startswith
(
engine_query
):
results
.
append
(
'!{engine}'
.
format
(
engine
=
engine
.
replace
(
' '
,
'_'
)))
# check if query starts with engine shortcut
for
engine_shortcut
in
engine_shortcuts
:
if
engine_shortcut
.
startswith
(
engine_query
):
results
.
append
(
'!{engine_shortcut}'
.
format
(
engine_shortcut
=
engine_shortcut
))
# check if current query stats with :bang
elif
full_query
.
getSearchQuery
()[
0
]
==
':'
:
if
len
(
full_query
.
getSearchQuery
())
==
1
:
# show some example queries
results
.
append
(
":en"
)
results
.
append
(
":en_us"
)
results
.
append
(
":english"
)
results
.
append
(
":united_kingdom"
)
else
:
engine_query
=
full_query
.
getSearchQuery
()[
1
:]
for
lc
in
language_codes
:
lang_id
,
lang_name
,
country
=
map
(
str
.
lower
,
lc
)
# check if query starts with language-id
if
lang_id
.
startswith
(
engine_query
):
if
len
(
engine_query
)
<=
2
:
results
.
append
(
':{lang_id}'
.
format
(
lang_id
=
lang_id
.
split
(
'_'
)[
0
]))
else
:
results
.
append
(
':{lang_id}'
.
format
(
lang_id
=
lang_id
))
# check if query starts with language name
if
lang_name
.
startswith
(
engine_query
):
results
.
append
(
':{lang_name}'
.
format
(
lang_name
=
lang_name
))
# check if query starts with country
if
country
.
startswith
(
engine_query
):
results
.
append
(
':{country}'
.
format
(
country
=
country
.
replace
(
' '
,
'_'
)))
# remove duplicates
result_set
=
set
(
results
)
# remove results which are already contained in the query
for
query_part
in
full_query
.
query_parts
:
if
query_part
in
result_set
:
result_set
.
remove
(
query_part
)
# convert result_set back to list
return
list
(
result_set
)
def
dbpedia
(
query
):
...
...
searx/query.py
View file @
4e2dae30
...
...
@@ -77,7 +77,7 @@ class Query(object):
if
lang
==
lang_id
\
or
lang_id
.
startswith
(
lang
)
\
or
lang
==
lang_name
\
or
lang
==
country
:
or
lang
.
replace
(
'_'
,
' '
)
==
country
:
parse_next
=
True
self
.
languages
.
append
(
lang
)
break
...
...
searx/webapp.py
View file @
4e2dae30
...
...
@@ -46,7 +46,7 @@ from searx.languages import language_codes
from
searx.https_rewrite
import
https_url_rewrite
from
searx.search
import
Search
from
searx.query
import
Query
from
searx.autocomplete
import
backends
as
autocomplete_backends
from
searx.autocomplete
import
searx_bang
,
backends
as
autocomplete_backends
from
searx
import
logger
...
...
@@ -352,8 +352,11 @@ def autocompleter():
if
not
completer
:
return
# parse searx specific autocompleter results like !bang
raw_results
=
searx_bang
(
query
)
# run autocompletion
raw_results
=
completer
(
query
.
getSearchQuery
(
))
raw_results
.
extend
(
completer
(
query
.
getSearchQuery
()
))
# parse results (write :language and !engine back to result string)
results
=
[]
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment