Termos específicos são ignorados nas buscas?

I’m having a few difficulties with the search functionality today.

We have an automated process we creates topics based on a lecture from a course, an example may be;

About ‘Implementing Health & Damage’

I found myself wanting to reduces the maximum number of characters for a topic length and decide I’d do a quick search to see how many of our automated topics are quite long, to get a feel for the suitable max length.

If I search using the above, I’ll get result, but I need the search to be a little more general than that, so I’ve tried searching for;

About ’

…knowing that is the start of the format we always use. When I do, I don’t get any results, if I add another word after the apostrophe I do get results. I assumed at that point it was related to the apostrophe, but nope, if I search for just;

About

I get no results, yet if I search for;

Test

I do get results! This indicates there isn’t a limitation on the number of words as a minimum for a search, and we have a 3 character limit set for the term, so it isn’t that. The only thing I can think of is that there is a list of “words” that are being ignored from a search, yet I don’t think we’ve set these up.

Any information would be appreciated. :slight_smile:


Update

I have also tested this with “because”, “and”, “the” and these all produce no results, so I’m feeling that there is a list of “common words” which are being ignored, but because I don’t have access to these via the settings I cannot alter them, and, cannot perform the search I want to perform.

Yes, I believe these are “stop” words — see:

I’m not sure if things have changed much since two years ago, but there doesn’t seem to be an easy way to change those.

Hi Kris,

Thanks for the reply.

Yeah, I thought as much. It’s a pain on this occasion as in this specific case the word does have value.

I guess using DataExplorer wouldn’t get around this either?


Update

Actually, via DataExplorer it works. I guess a full text search isn’t carried out when querying the topic title field.

Looks like a work-around :slight_smile:

Acabei de me deparar com isso também. É… extremamente irritante. Alguma atualização? Existe alguma maneira de mudar isso agora? “Sobre” realmente não deveria ser uma palavra filtrada na busca! Foi assim que me deparei com isso aqui no Meta:

Eu estava na categoria Plugins e notei que alguns tópicos de plugins excluem automaticamente as respostas, enquanto outros não. Então, fui ver se havia uma explicação para isso no tópico “Sobre” dessa categoria. Não havia, então eu ia perguntar sobre isso, mas primeiro queria fazer um pedido de funcionalidade para um plugin (em um tópico que exclui respostas automaticamente :grinning_face_with_smiling_eyes:). Então, voltei à lista principal de categorias e fiz minha resposta. Depois, voltei novamente à lista de categorias e tentei encontrar o tópico About the Plugin category. Como era um tópico antigo, mas fixado, e eu já o havia lido… ele não estava mais visível na lista (agora havia sido movido para sua posição adequada à data). :roll_eyes: OK, sem problema, vou apenas Pesquisar por ele… Mas, é claro, nada feito.

O maior problema é que não há absolutamente nenhum aviso ou mensagem na interface sobre isso. A busca simplesmente falha silenciosamente. Então, se isso for impossível de corrigir devido a limitações do Postgres, gostaria de sugerir fortemente que vocês adicionem uma funcionalidade no Discourse que notifique as pessoas sobre essas palavras sendo filtradas da busca! Caso contrário, é bastante confuso.

Também fiquei surpreso que “about” esteja na lista atual de stopwords do Postgres, mas aqui está:

Uma solução alternativa é pesquisar por tópicos fixados em uma categoria

in:pinned #suporte

Obrigado, Jeff. Eu não sabia que era possível pesquisar tópicos fixados. Sempre há algo legal e novo para descobrir nas funcionalidades do Discourse. :smiley:

Mas… você tem alguma ideia sobre alertar o usuário que está procurando e não encontra nada, mesmo sabendo que deveria haver resultados? Agora que vejo a lista completa, ela é realmente bem longa…

É uma boa ideia emitir um aviso se sua pesquisa contiver apenas stopwords. Quão difícil seria fazer isso @tgxworld?

Não queremos codificar a lista manualmente, então precisamos de uma maneira de consultar o PostgreSQL e nos dizer “todas essas palavras são stopwords?”.

Podemos retornar uma coluna extra em nossa consulta de pesquisa, o que nos permitirá identificar se o termo consistiu apenas de palavras de parada, o que não é muito difícil de fazer. Terei que investigar mais a fundo para descobrir onde injetar essa coluna extra, mas o objetivo final para nós deve ser evitar uma consulta extra ao banco de dados apenas para descobrir se um termo é composto apenas de palavras de parada.

Talvez, se não houver resultados de pesquisa, executemos essa verificação para ver se a consulta consiste apenas em stopwords? Assim, só executamos uma verificação extra quando os resultados já são ruins de qualquer forma. Conforme a lista de stopwords, se você pesquisar, por exemplo, por “doing should now”.

No pior caso, poderíamos duplicar a lista e executar a verificação no lado do servidor; são apenas 127 strings, mas seria uma solução meio “gambiarra”. Talvez, no momento da inicialização, pudéssemos consultar a lista de stopwords e armazená-la em cache?

Sim, é meio parecido com o que eu quis dizer com a coluna extra nos resultados da pesquisa. Se a pesquisa estiver vazia, consultamos a coluna para descobrir se isso ocorre porque todos os termos são palavras de parada ou porque obtivemos 0 correspondências.

Como essas stop words funcionam em outros idiomas? As palavras traduzidas também são paradas? Ou apenas as em inglês quando conectadas a alguma necessidade técnica?

Existem arquivos para diferentes idiomas

Entendi. Quase todos os pronomes pessoais em quase todas as formas, e com o verbo ser, mais alguns conectivos como or, only, when, etc. Quase tudo pode ser ignorado nas buscas, por exemplo, nós não precisamos principalmente de personas em uma frase. Mas claro, isso mantém o banco de dados mais controlável.

Mas é bom saber que ele também foi construído por idioma. Obrigado.