搜索查询解析器#
SQLAlchemy-Searchable 包含一个搜索查询解析器,该解析器可以将人类可读的搜索查询转换为 PostgreSQL 搜索查询语法。
AND 运算符#
搜索查询解析器将搜索词视为相互连接,其中隐含 AND 运算符。若要搜索同时包含“star”和“wars”的文章,只需使用查询“star wars”
query = search(query, 'star wars')
OR 运算符#
搜索查询解析器中的 OR 运算符允许你扩大搜索范围,以包含任何指定词条的结果。若要搜索包含“star”或“wars”的文章,你可以按如下方式使用 OR 运算符
query = search(query, 'star or wars')
取反运算符#
搜索查询解析器支持从搜索中排除词语。在想要排除的词语前输入 -
。若要搜索包含“star”但不包含“wars”的文章,你可以使用查询“star -wars”
query = search(query, 'star -wars')
短语搜索#
如果你需要搜索特定短语,请用双引号引住该短语
query = search(query, '"star wars"')
内部架构#
如果你只想使用查询解析器,则可以通过调用 parse_websearch
函数来实现。此函数将人类可读的搜索查询解析为 PostgreSQL tsquery
格式
>>> session.execute("SELECT parse_websearch('(star wars) or luke')").scalar()
'(star:* & wars:*) | luke:*'