Как добавить полнотекстовый поиск SQLServer в Django? - PullRequest
2 голосов
/ 04 июля 2019

В 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, если это возможно.

...