Busca por “Mover para tópico existente” falha silenciosamente enquanto busca no site ainda funciona

Olá,

Estou a ver um problema com a modal “Mover para tópico existente” (isto funcionava anteriormente no meu site, parecendo ser uma regressão):

  • Digitar em Procurar um Tópico não refina os resultados
  • As solicitações de rede retornam 200 com os parâmetros corretos
  • Nenhum erro de JS na consola do navegador
  • A pesquisa /search de todo o site funciona como esperado
  • O problema persistiu após reconstruções

Exemplo de solicitação sendo feita:
/search/query?term=Eve Park&type_filter=topic&search_for_id=true&restrict_to_archetype=regular

A lista de seleção parece permanecer um conjunto estático de tópicos e não muda à medida que o term (termo) muda.


Após depuração do lado do cliente, inicialmente suspeitei que isto poderia ser causado por pg_trgm não estar ativado no Postgres, mas queria confirmar isto antes de prosseguir.

Executei os seguintes comandos:

./launcher enter app
rails c
ActiveRecord::Base.connection.execute(
  "SELECT extname FROM pg_extension WHERE extname = 'pg_trgm';"
).to_a

Este diagnóstico seria válido se o comando retornasse:

[]

No entanto, em vez disso, retornou:

[{"extname"=>"pg_trgm"}]

Portanto, pg_trgm está ativado, e isto não parece ser a causa raiz.


Portanto, pretendo executar o seguinte comando:

./launcher enter app
rake search:reindex

Isto pode ser relevante porque uma categoria específica do meu fórum tem um número muito grande de tópicos.


O que é confuso é que:

  • O Discourse continua a funcionar normalmente
  • A pesquisa completa /search funciona como esperado
  • O autocompletar de movimentação de tópicos degrada-se silenciosamente em vez de avisar

Como parte da depuração, também ativei a configuração search prefer recent posts (pesquisar preferir posts recentes) e recarreguei o navegador. Isto não teve efeito no comportamento - a pesquisa de “Mover para tópico existente” ainda não refina os resultados enquanto digito.

Como essa configuração afeta apenas a classificação da pesquisa completa /search e não o endpoint do seletor de tópicos, isto parece consistente com o problema ser específico de /search/query em vez do desempenho geral da pesquisa.


Antes de executar rake search:reindex, queria verificar a lógica:

O seletor de movimentação de tópicos usa /search/query com search_for_id=true, que depende mais diretamente de pesquisas de índice do que o endpoint /search completo. Um índice de pesquisa parcialmente desatualizado ou inconsistente poderia, portanto, afetar o seletor enquanto a pesquisa completa ainda parece funcionar.

Dado que:

  • o endpoint está a ser chamado,
  • as respostas retornam 200,
  • pg_trgm está ativado,
  • e alternar search prefer recent posts não tem efeito,

Um rake search:reindex completo parece ser o próximo passo lógico para descartar a inconsistência do índice. Separadamente, a falta de qualquer aviso ou feedback torna isto particularmente confuso da perspetiva da experiência do utilizador (UX) do administrador.

1 curtida

Essa busca nunca foi confiável na minha experiência. Por exemplo, há também este relatório: Topic can't be found when searching for a topic (verbatim) when moving a post.
Eu geralmente insiro o ID do tópico e uso a busca do site para encontrá-lo.

1 curtida

Obrigado - esse é um contexto útil, e o relatório vinculado parece muito semelhante.

O estranho no meu caso é que ele se comportou como “não responsivo” quando escrevi a postagem original: /search/query estava sendo chamado com term=Eve Park etc. (respostas 200), mas a lista de seleção permaneceu estática e não refinou de forma alguma.

Desde então, consigo reproduzir o comportamento de “busca responsiva” pretendido (como mostrado na minha gravação em Modo de Segurança) lado a lado com outra janela do navegador.

Eu não mudei nada no servidor além do que descrevi na postagem original, então minha suspeita atual é que inicialmente encontrei:

  • um problema de estado do lado do cliente (ativos em cache / diferença de atualização forçada / interação de componente de tema), ou
  • um caso extremo de consulta onde certos termos não retornam como esperado (correspondência exata / pontuação / palavras de parada / ordenação), semelhante ao relatório “a busca de movimento exato não consegue encontrar o tópico” que você vinculou.

Em seguida, vou comparar a resposta JSON real de /search/query entre o caso “não responsivo” e o caso “responsivo” (mesmo termo), e também executarei o Modo de Segurança novamente com/sem temas para ver se isso se correlaciona.

Se alguém souber as regras exatas de correspondência usadas pelo seletor de mover tópico (em comparação com a busca completa /search) ou onde ele difere, isso seria muito útil - estou tentando identificar se esta é uma limitação/caso extremo conhecido ou uma regressão.