Como impor correspondências exatas ao pesquisando?

Notei que, em algumas pesquisas, não obtenho resultados:

Mas se eu restringir a pesquisa, por exemplo, a um tópico específico, obtenho o resultado que estou procurando:

Inicialmente, pensei que pudesse ter algo a ver com o caractere acentuado, mas realizei vários testes e o mesmo acontece com caracteres sem acento.

Minha segunda hipótese foi que poderia ser devido a palavras de parada, mas alterei o app.yml para encurtar o dicionário de stopwords em espanhol:

ls -l /usr/share/postgresql/13/tsearch_data/spanish.stop
-rw-r--r-- 1 root root 0 May 12 06:37 /usr/share/postgresql/13/tsearch_data/spanish.stop
                       ☝️

Há alguma configuração que eu possa ajustar para garantir que correspondências exatas sejam sempre encontradas?

Olá @Nacho_Caballero

Pode me fornecer um texto de exemplo e um termo de pesquisa que reproduzam o problema? Consigo ver na imagem, mas só é possível ver o trecho.

Obrigado, Alan.

Aqui está o conteúdo daquela postagem específica:

De fato, não se usa depois do “penso que” porque o que você está afirmando que pensa trata-se de uma realidade, e não de uma possibilidade.

Por outro lado, usamos o subjuntivo quando utilizamos essa mesma estrutura, mas na forma negativa: “Não penso que haja muita gente no mercado hoje”.

Espero que isso responda à sua pergunta, mas se precisar de mais detalhes, por favor, me avise e ficarei feliz em ajudar.

Saudações! :smiley:

No entanto, para reproduzir esse comportamento aqui, você teria que definir o locale para espanhol e truncar o dicionário :sweat_smile:

Testei em um site Discourse de desenvolvimento que tenho rodando localmente e não consegui reproduzir o comportamento, mas acho que é porque o site está praticamente vazio. Não acho que esse problema ocorra até que você tenha muitas postagens (atualmente tenho cerca de 68 mil).

Poderia tentar outras coisas relacionadas ao dicionário do PostgreSQL, mas não tenho certeza de como entrar na minha imagem Docker quando estou rodando uma instalação de desenvolvimento. Existe um equivalente ao launcher enter app?

Idealmente, haveria uma maneira de ignorar palavras de parada. Por exemplo, para procurar esta frase na sua mensagem:

@Nacho_Caballero, Olá, você poderia me informar qual algoritmo de busca o Discourse está usando atualmente? Isso me ajudará a investigar o problema.

Obrigado, Yashi.

Acredito que o Discourse utilize o algoritmo de pesquisa de texto completo padrão do Postgres. Acredito que a única maneira de fornecer correspondências exatas ao usar aspas (sem stemming e sem ignorar palavras de parada) seria usando o dicionário ‘simples’ :thinking:

Obrigado, @Nacho_Caballero.

Vou examinar o algoritmo de pesquisa de texto completo do Postgres.

É possível buscar por correspondência exata?

Exemplo:

No momento, a busca por “flow” infelizmente retorna “flower” como o resultado de maior relevância.

Tente pesquisar usando aspas, por exemplo, pesquise por “flow” e não por flow.