Fala Matheus. Blz?
Preciso fazer uma melhoria aqui no sistema de busca do site. Há um tempo atrás fizemos uma mehoria de colocar os produtos em order decrescente.
Agora preciso fazer uma melhoria com relação aos termos da busca.
Veja que estou buscando por duas palavras, bolsa e preta. Acontece que o sistema está mostrando resultados incompatíveis com a busc (mostra também em ordem decrescente de criação, o que é ok). Pelo que estou a entender, ele busca as palavras separadamente. Preciso de uma solução de melhoria pra essa busca. Tem alguma ideia? Estamos tendo problemas com cliente não encontrando os produtos aqui.
Penso eu que o sistema poderia fazer primeiro uma consulta com o termo de busca como um todo e não separadamente e depois mostrar outros resultados mais próximos de acordo com categoria / subcategoria e outros atributos relevantes do produto.
Detalhe que ele até mostra as bolsas, mas elas estão mais abaixo.
Matheus, blz? Então o único critério que uso foi aquele que você inseriu de ordem decrescente de busca com relação a data de criação. Penso eu que poderia tentar buscar produtos que tenham todas as palavras chaves e depois poderia vir picado conforme já está vendo mas priorizando por exemplo categoria e subcategoria e depois outras palavras chave… nessa ordem… que você acha? Pensa em algo melhor?
Deveria vir primeiro slip on preto, de acordo com título e não as bolsas. Como te disse, parece que ele busca por palavras separadas, e não por termo…
No caso, teria como eu colocar uma relevância nisso? Tipo, Slip on preto… Primeiro buscar pelo conjunto inteiro: algo como um regex, quanto mais matches maior a relevância. Depois mostrar categorias e depois vir as “coisas” pretas, como bolsas e outros produtos…
Talves Matheus eu possa estar colocando esses termos para aprimoramento de buscas nas tags dos produtos entendeu… para facilitar… o que você acha melhor?
Opa, o que eu vi aqui que pode estar bagunçando um pouco é as keywords, porque o match é feito com base nelas, além do nome do produto. Vou fazer uns testes aqui,de ao invés de considerar na busca de termo, a relevancia do nome do produto, como igual para keyword.
Boa noite, de quantidade de matches de quê exatamente? Falando em arquivo, daria pra ser feito um parse, por exemplo, zeramos as keywords. E você me faz uma lista ou te passo onde alterar, que se a pessoa pesquisar termo x, deve ser considerado y. Eu vou rodar o site e printar aqui, quando nao considera a keyword na busca por termo.
No mongo db tem vários tipo de busca, o que estava usando era match por termo. Coloquei pelo match da maioria dos termos buscados. Mantive a keyword na busca, porque vi que ela não fez diferença, avalia e me fala por favor. Agora tem um campo tbm pra você informar se a pesquisa pesquisou A, deve retornar B pelo github, caso queira, mostro pra você ou me passe uma lista
Opa, vou colocar todas opções aqui e assim ficam mais cientes, ok? Na sua loja hoje tem um misto. Vou colocar todas opções disponíveis no elastic search:
best_fields: Encontra documentos que correspondem a qualquer campo, mas utiliza o _score do melhor campo.
most_fields: Encontra documentos que correspondem a qualquer campo e combina o _score de cada campo.
cross_fields: Trata campos com o mesmo analisador como se fossem um único campo grande. Procura por cada palavra em qualquer campo.
phrase_prefix: Match no prefixo.
Vou deixar o link mais explicativo de cada uma:
Na sua loja @barradoce foi colocado prefixo, para pesquisa com termo pequeno, menor que 6 caracteres, no caso de 5 pra baixo. Acima disso, best_fields, que é o mais indicado pelo elastic que dá match por cada palavra, levando em considerção ao melhor score retornado. O score tem haver com o melhor match de palavra pesquisada e resultado
Hoje usamos um outro método, alguns desses de troca de caracteres não funciona muito bem pra palavras em portugues por conta de no alfabeto lá não ter alguns acentos… Dai adaptamos esse método e fizemos um código pra meio que substituir ele.