Qual è un buon approccio per fornire risultati di ricerca evidenziati in un database full text?

1

Diciamo che abbiamo un database full-text. La cosa ragionevole da fare, per la scalabilità, è archiviare solo un indice ma non il contenuto dei documenti.

Il problema che sto affrontando è: vorrei fornire un'anteprima evidenziata del contenuto quando si elencano i risultati di ricerca per una determinata query (proprio come fa Google), ma trovo difficile scegliere uno degli approcci rispetto all'altro:

Approccio I:

  1. Creazione di un indice per il set di documenti.
  2. Memorizzazione del contenuto testuale dei documenti.
  3. Dopo aver recuperato i documenti per una determinata query di ricerca, viene creata un'anteprima evidenziata utilizzando il contenuto dei documenti precedentemente memorizzato.

Problema: archiviazione.

Metodo II:

  1. Creazione di un indice per il set di documenti, senza memorizzare il contenuto del testo.
  2. Dopo aver recuperato i documenti per una determinata query di ricerca, un'anteprima evidenziata viene creata dinamicamente (in fase di query) leggendo il contenuto testuale dei documenti.

Problema: potrebbe richiedere molto tempo per analizzare il contenuto testuale dei documenti mentre l'utente è in attesa.

Quindi, ci sono approcci conosciuti a questo problema? Altrimenti, quale pensi, relativamente, costa meno dell'altro?

    
posta reaffer 02.04.2017 - 18:57
fonte

2 risposte

0

È possibile memorizzare l'indice e il primo paio di punti salienti e il testo circostante per oggetto (come anteprima).

In questo modo, guardando i risultati iniziali, l'utente può decidere di recuperare il documento o meno.

Questo approccio aumenterà sicuramente il tuo spazio di archiviazione, ma non tanto quanto il tuo primo approccio. Sarà più o meno allo stesso tempo se le opzioni di anteprima sono limitate a un paragrafo o giù di lì.

    
risposta data 02.04.2017 - 19:42
fonte
0

Dipende dalla tua distribuzione di indici:

Riaprire la seguente frase di esempio:

The government passed a bill on tax deductions

Se a ogni singola parola verrebbe assegnato un indice e un contesto si memorizzerebbe il contesto un numero di volte (supponendo che ci siano 4 parole chiave in questa frase (i nomi), probabilmente finiscono per memorizzare l'intera frase con ognuna delle quattro parole chiave.). Definire ancora un'altra parola chiave indicizzata dalla frase memorizzerebbe l'intera frase ancora una volta.

Mantiene il contesto nel file, memorizza l'offset delle occorrenze nel file con l'indice, carica e visualizza il testo circostante direttamente dal file di testo quando vengono visualizzati i risultati della ricerca. (Questo è fondamentalmente il tuo approccio II).

    
risposta data 28.01.2018 - 11:16
fonte

Leggi altre domande sui tag