Domanda

Ho visto alcuni siti che elencano ricerche correlate quando esegui una ricerca, in particolare suggeriscono altre query di ricerca che potrebbero interessarti.

Mi chiedo il modo migliore per modellarlo in un sito di medie dimensioni (non abbastanza traffico per fare affidamento sulle statistiche dei visitatori per inferire le relazioni). Il mio pensiero iniziale è quello di memorizzare i primi 10 risultati per ogni query univoca, quindi quando viene eseguita una nuova ricerca per trovare tutte le ricerche storiche che corrispondono a una parte dei primi 10 risultati ma idealmente non corrispondono a tutti (potrebbe corrispondere a tutti suggerire una ricerca equivalente e quindi non così utile come un suggerimento).

Immagino che alcune persone abbiano già fatto questa funzionalità prima e possano essere in grado di fornire alcune idee su diversi modi per farlo. Non sto necessariamente cercando un'idea vincente poiché la soluzione varierà senza dubbio in modo sostanziale a seconda delle dimensioni e della natura del sito.

È stato utile?

Soluzione

hai considerato una matrice di parole chiave su 1 asse rispetto a documenti su un altro asse. una volta trovato l'insieme di vetori che rappresentano le parole chiave, trova insiemi di parole chiave trovate nel set di risultati iniziale e quindi trova un modo per classificare le altre parole chiave in base a quanti documenti fanno riferimento o quante volte intercettano il set di risultati iniziale .

Altri suggerimenti

Ho provato diversi approcci a questo, con vari gradi di successo. Alla fine, penso che l'approccio migliore dipenda fortemente dal dominio / argomenti cercati e dal modo in cui gli utenti formano le query.

Il tuo pensiero di memorizzare ricerche precedenti mi sembra ragionevole. Sarei curioso di vedere come funziona nella pratica (intendo nel modo più sincero: ci sono molte sfumature che possono far fallire queste tecniche nel "mondo reale", in particolare quando i dati sono scarsi).

Ecco alcune tecniche che ho usato in passato e che ho visto in letteratura:

  1. Approcci basati sul thesaurus: indicizza un thesaurus per ogni termine che l'utente ha usato, quindi usa un po 'euristica per filtrare i sinonimi per mostrare all'utente come termini di ricerca possibili.
  2. Stemma e cerca su quello: Stemma i termini di ricerca (es: con il Porter Stemming Algorithm e quindi usa i termini derivati ??invece delle query inizialmente fornite e offre all'utente la possibilità di cercare esattamente i termini che hanno specificato (o fare il contrario, cercare prima i termini esatti e usare stemming per trovare i termini che derivano dalla stessa radice. Questo secondo approccio richiede ovviamente un po 'di pre-elaborazione di un dizionario noto, oppure è possibile raccogliere termini man mano che il termine di indicizzazione li trova.)
  3. Concatenamento: analizzare i risultati trovati dalla query dell'utente ed estrarre i termini chiave dai primi N risultati ( KEA è una libreria / algoritmo che puoi consultare per le tecniche di estrazione delle parole chiave.)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top