搜索查询解析器#

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:*'