Django: как выполнить полнотекстовый поиск по японскому языку (многобайтовые строки) в Postgresql

#django #postgresql #full-text-search

Вопрос:

Можно создать индекс для поиска с помощью SearchVector, но, однако, японские слова не разделяются пробелами, и полнотекстовый поиск не работает должным образом. Как я могу выполнить полнотекстовый поиск по японскому языку (многобайтовые символьные строки)?

Я думал о внедрении поисковой системы, такой как ElasticSearch, но возникли другие проблемы. Если возможно, я хотел бы выполнить FTS с помощью Postgres.

 # models.py
class Post(models.Model):
    title = models.CharField(max_length=300)
    search = SearchVectorField(null=True)

    class Meta:
        indexes = [GinIndex(fields=["search"])]

# update search column
Post.objects.update(search=SearchVector('title'))
 

Ответ №1:

Посмотрите на расширение Pgroonga Postgres для полнотекстового поиска на всех языках. Он используется проектом Zulip с потрясающими результатами.