def prepare_search_term(request):
from antlr4 import IllegalStateException
from lucenequery.prefixfields import prefixfields
from lucenequery import dialects
search_term = request.params.get('searchTerm', '').strip() or '*'
if search_term == '*':
return search_term
# avoid interpreting slashes as regular expressions
search_term = search_term.replace('/', r'\/')
# elasticsearch uses : as field delimiter, but we use it as namespace designator
# if you need to search fields you have to use @type:field
# if you need to search fields where the field contains ":", you will have to escape it
# yourself
if search_term.find("@type") < 0:
search_term = search_term.replace(':', '\:')
try:
query = prefixfields('embedded.', search_term, dialects.elasticsearch)
except (IllegalStateException):
msg = "Invalid query: {}".format(search_term)
raise HTTPBadRequest(explanation=msg)
else:
return query.getText()
评论列表
文章目录