Domanda

Esistono buoni esempi (siti Web o libri) su come costruire un motore di ricerca full-text in F #?

È stato utile?

Soluzione

Vuoi scrivere tu stesso? O hai semplicemente bisogno della funzionalità?

Se hai bisogno della funzionalità, un database incorporato / in memoria con supporto per la ricerca full-text potrebbe fare il trucco. Dal momento che è .Net, raccomanderei provider SQLO ADO.Net come contendente open source. È davvero buono (supporta LINQ prima di qualsiasi altro provider là fuori, supporto in fase di progettazione, ecc.) E il supporto FTS è in fase di sviluppo molto attivo. Penso che Google ci stia lavorando. Esiste anche Database VistaDB . Lo sto usando principalmente ora. Dovrebbe avere il supporto FTS. Interamente .Net, che offre alcuni vantaggi di integrazione.

Se devi farlo da solo, consulta i libri su Recupero informazioni . Ne ho letti alcuni, ma non so nulla che si distingua dalla folla. Amazon potrebbe aiutarti lì.

Altri suggerimenti

Ho scritto un motore di ricerca in F # usando solo poche righe di codice. Puoi leggerlo nel mio poster e accedi alla piena implementazione in

Home page di Stefan Savev

L'idea di base è mostrata nel codice seguente, ma in realtà sono necessarie più spiegazioni del codice stesso. Questi sono disponibili anche sul mio sito Web.

Questo codice crea l'indice sul disco di una raccolta di documenti. L'indicizzazione viene eseguita nella memoria esterna.

1.   let create_postings in_name tmp_dir out_name =
2.     let process_doc (doc_id, doc_text) = 
3.         doc_text |> tokenize |> stopword |> stem 
4a.        |> List.count
4b.        |> ListExt.map(fun (word, tf) -> (word, (doc_id, tf)) 
5.     in_name 
6.     |> as_lines
7.     |> Seq.map_concat extract_docs 
8.     |> Seq.map_concat process_doc
9a.    |> External.group_by (fun (w, _) -> w) 
9b.       (fun (_, docid_and_tf) -> docid_and_tf) 
9c.       (fun lst -> (List.length lst, lst)) 
9d.       tmp_dir
9e.       (External.ElemDesc())
10.    |> output out_name
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top