В Django можно использовать полнотекстовый поиск при использовании Postgres.Однако при использовании его с SQL Server (и django-pyodbc-azure) не существует простого способа сделать это (насколько я знаю).
Чтобы выполнить полнотекстовый поиск в SQL Server, вы используете *Функция 1003 *, как описано в документации , но Django ORM содержит do: LIKE '% text %'
.
Я нашел два альтернативных метода, чтобы обойти эту проблему.Один использует RAW SQL, другой использует django extra .
Фрагмент с использованием django raw SQL:
sql = "SELECT id FROM table WHERE CONTAINS(text_field, 'term')"
table = Table.objects.raw(sql)
Использование django extra:
where = "CONTAINS(text_field, 'term')"
table = Table.objects.extra(where=[where])
С этим связаны две проблемы:
- Необработанные запросы труднее поддерживать.
- Django docs .не рекомендуется использовать дополнительный метод.
Так что я хочу знать, есть ли лучший способ сделать это, используя "чистый" django ORM, если это возможно.