Как искать русский текст в django?

Есть необходимость организовать поиск русских слов. Из документации к django понятно, что при использовании базы SQLite поиск ведется с учетом регистра. Как можно это обойти? Вот такой пример использования поиска:

class ProductListView(ListView):
    model = Product  

    def get_queryset(self):
        qs = super().get_queryset()
        get_params = self.request.GET.dict()

        # search
        if get_params.get('q'):
            qs = qs.filter(product_title__icontains=get_params.get('q'))

Ответы (2 шт):

Автор решения: Andrew Holovko

Используйте __iregex - Регистронезависимая проверка регулярным выражением.

Entry.objects.get(product_title__iregex=r'^[а-яА-Я]/$').all()

Ссылка на документацию: https://djbook.ru/rel1.9/ref/models/querysets.html

→ Ссылка
Автор решения: Vitaliy Pavlov

Итак, как мы знаем, регистронезависимого поиска не в ASCII-символах в sqlite3 нет. Поиск решения приводит к расширению ICU. Для начала надо его скомпилировать. Устанавливаем пакеты:

sudo apt update
sudo apt install libicu-dev libsqlite3-dev pkg-config

Скачиваем icu.c и компилируем:

gcc -fPIC -shared icu.c `pkg-config --libs --cflags icu-uc icu-io` -o libicu.so

Почему мы переименовали libSqliteIcu.so из инструкции в libicu.so описано здесь (иначе будет возникать ошибка). Переносим библиотеку в папку с проектом (я расположил ее вместе с manage.py) и подключаем к нашему django-приложению:

# core/utils.py
import os

from django.conf import settings


def load_icu(connection, **kwargs):
    if connection.vendor != 'sqlite':  # проверяем, что подключаемая база - sqlite3
        return
    connection.connection.enable_load_extension(True)
    connection.connection.load_extension(
        os.path.join(settings.BASE_DIR, 'libicu.so'))
# core/apps.py
from django.apps import AppConfig
from django.db.backends.signals import connection_created

from core.utils import load_icu


class CoreConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "core"

    def ready(self):
        connection_created.connect(load_icu)

Теперь регистронезависимый поиск работает!

Для Windows компилируем libicu.dll в MINGW64, предварительно установив необходимые пакеты:

pacman -S mingw-w64-x86_64-cmake
pacman -S mingw-w64-x86_64-icu
→ Ссылка