Estou usando um aplicativo que usa PostgreSQL como seu banco de dados e ele usa a unaccent
extensão para normalizar texto. Quero melhorar sua funcionalidade de pesquisa modificando o unaccent.rules
arquivo.
Eu edito /usr/share/postgresql/16/tsearch_data/unaccent.rules
e adiciono algumas regras para o bloco unicode árabe ( U+0600
paraU+06ff
):
۰ 0
۱ 1
۲ 2
۳ 3
۴ 4
۵ 5
۶ 6
۷ 7
۸ 8
۹ 9
َ
e está funcionando bem.
SELECT unaccent('سَلام ۱۳۲');
unaccent
----------
سلام 123
(1 row)
Problema 1:
O problema é com o Zero Width Non-Joiner (ZWNJ - U+200C
). Ele deve ser substituído por espaço ( U+0020
).
سَلامعلیکم
->سلام علیکم
O que eu tentei:
Tentei essas linhas, mas nenhuma delas funciona ou dá erro:
"" " "
:invalid syntax: more than two strings in unaccent rule
(aviso) + não funcionou. " "
:invalid syntax: more than two strings in unaccent rule
(aviso) + não funcionou.\u200C \u0020
: Sugerido pelo ChatGPT, mas não funcionou.\u200C " "
: Sugerido pelo ChatGPT, mas não funcionou.
Nota.1:
Nas duas primeiras linhas acima, há um caractere ZWNJ invisível, que é mostrado como <200c> no VIM, mas não está visível nesta postagem.
Nota.2:
Não adicionei todas essas linhas ao mesmo tempo, testei uma por uma.
Nota 3:
Não há nenhuma outra regra para ZWNJ no
unaccent.rules
Problema 2:
Existe uma maneira de adicionar um novo arquivo de regras em vez de editar o padrão? Não consigo editar o código-fonte do aplicativo e alterar as consultas.
Adicionar algo como /usr/share/postgresql/16/tsearch_data/arabic.stop
ou /usr/share/postgresql/16/tsearch_data/arabic.rules
e reiniciar o serviço faz com que o PostgreSQL o entenda?
É necessário executar alguma consulta para recarregar o arquivo?
É necessário alterar a maneira como a pesquisa é solicitada no aplicativo?