Tôi mở rộng lớp django SearchQuery và ghi đè plainto_tsquery
với to_tsquery
. Đã làm một số thử nghiệm đơn giản, nó hoạt động. Tôi sẽ quay lại đây nếu tôi tìm thấy các trường hợp mà điều này gây ra sự cố.
from django.contrib.postgres.search import SearchQuery
class MySearchQuery(SearchQuery):
def as_sql(self, compiler, connection):
params = [self.value]
if self.config:
config_sql, config_params = compiler.compile(self.config)
template = 'to_tsquery({}::regconfig, %s)'.format(config_sql)
params = config_params + [self.value]
else:
template = 'to_tsquery(%s)'
if self.invert:
template = '!!({})'.format(template)
return template, params
Bây giờ tôi có thể làm điều gì đó như query = MySearchQuery('whatever:*')