Algoritmo del motore di ricerca per la ricerca di parole nel documento

4

Devo progettare e implementare un algoritmo per il mio progetto universitario che ricerca un determinato set di documenti in base alle parole chiave / query fornite. Supponiamo che ogni documento contenga poche frasi e questi documenti possano essere archiviati in una struttura dati adeguata. Quando viene effettuata una query, devo visualizzare i documenti che contengono le parole chiave. Una query può contenere semplici operatori logici come "AND" e "OR".

Ad esempio, supponiamo che ci siano 3 documenti denominati Doc1, Doc2, Doc3 con questo contenuto:

  • Doc1: questa è la mia università.
  • Doc2: My University è situata a Delhi.
  • Doc3: mi piace la mia università.

Ecco le risposte ad alcune domande:

  1. "Università": Doc1, Doc2, Doc3
  2. "my AND University": Doc1, Doc2
  3. "come OR Delhi": Doc2, Doc3

Attualmente ciò che ho sviluppato legge ogni file e ne mette il contenuto in alberi binari separati, e ho sviluppato una funzione per cercare una parola dagli alberi binari. Come posso estendere il mio algoritmo di ricerca per la ricerca con operatori logici?

    
posta SHdinesh Madushanka 11.10.2016 - 17:33
fonte

2 risposte

2

Inserisci le parole in una coppia di valori chiave di (parola, serie di documenti). Quando esegui la ricerca, inserisci i set trovati nella tabella hash. Quindi fai una unione sui set per OR e le intersezioni per AND

    
risposta data 11.10.2016 - 17:46
fonte
0

Potresti andare con.

Dictionary<string, HashSet<Int>>  se
           word            docID

Ma pensavo che dovessi costruire da zero

Non conosco java
Potrebbe essere chiamato HashTable in java

var docs =  se["my"].Interset(se["university"]);

var docs =  se["my"].Union(se["Delhi"]);
    
risposta data 11.10.2016 - 18:38
fonte

Leggi altre domande sui tag