我和Django,DRF和PostgreSQL有一个项目。我需要在这个项目中搜索一些数据。在这个搜索中我需要逻辑运算符(AND,OR,NOT),通过前缀搜索(比如manch*)和不区分大小写。所以我决定使用PostgreSQL全文搜索,如下所示
class VariableSearch(generics.ListAPIView):
serializer_class = VariableSerializer
def get_queryset(self):
q = self.request.query_params.get('query')
if q:
vector = SearchVector('name', 'label')
query = SearchQuery(q, search_type='raw')
queryset = Variable.objects.annotate(search=vector).filter(search=query)
else:
queryset = Variable.objects.none()
return queryset
使用这种类型的搜索,我可以执行如下查询
http://127.0.0.1:8000/search_var/?query=полит:* | инфо:*
运算符OR和按前缀搜索运行良好。
但是,当我尝试在NOT(!)上使用AND(&)时,它给出的结果没有逻辑AND,或者对于这样的查询只有syntax error in tsquery: "word !not"
http://127.0.0.1:8000/search_var/?query=word !not
那么,如何使AND和NOT正确工作呢?
1条答案
按热度按时间qvsjd97n1#
添加另一个查询到url
例如:
或者,您可以使用'or'、'and'并获取此值,以便将其应用于您的查询(取决于它)