Pergunta

Eu tenho uma pesquisa ao vivo na minha página de ajuda que procuras nosso banco de dados ajuda e retorna os resultados relevantes. Figura I que uma boa maneira de decidir o que precisa de mais documentação seria pesquisas que retornam nenhum resultado para nosso banco de dados de log.

Normalmente, isso seria muito simples, mas o fato de que é uma pesquisa ao vivo tornou um pouco mais complicado.

Assim, quando alguém procura por:

  • Esta busca não retornou resultados.

porque é uma pesquisa ao vivo temos pesquisas de:

  • Esta s
  • Esta pesquisa r
  • Esta busca retornos n
  • Esta busca não retornou resultados.

Obviamente, seria melhor se pudéssemos registrar a frase completa e não os parciais.

Assim, por agora, a maneira que eu estou apenas despejar todas as buscas em uma tabela que se parece com: (Id int, texto SEARCH_STRING, int count)

As únicas maneiras que eu posso pensar que ajuda poder seria

  • Antes de adicionar uma nova linha para a mesa fazer como a busca da cadeia de pesquisa contra as pesquisas na tabela e se há uma correspondência não insira ou incrementar a contagem. No entanto, espero que esta tabela vai ficar muito grande e um como consulta como que se tornaria muito lento.

  • Escreva alguns javascript para se o valor de entrada não mudou em 2 segundos enviar uma pesquisa especial ao vivo com uma bandeira que diz a registrá-lo se é uma miss.

Parece-me que deve haver uma maneira melhor de lidar com isso, mas eu estou cega em qualquer coisa. Alguma idéia?

Foi útil?

Solução

Eu estou pensando o que você deve fazer é usar um temporário (diariamente, talvez, ou por hora se você precisar de mais rápido retorno) da tabela do candidato 'perdidas' pesquisas. No final da vida útil da tabela, ele é pós-processada de tal forma que todas as pesquisas que são prefixos de outras pesquisas não atendidas, ou de pesquisas bem-sucedidas, são ignorados. O resto de ir para a mesa de pesquisas perdidas 'reais'.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top