Pergunta

Existem exemplos bons (sites ou livros) em torno de como construir um motor de busca de texto completo em F #?

Foi útil?

Solução

Você quer escrever isso sozinho? Ou você simplesmente precisa da funcionalidade?

Se você precisar da funcionalidade, um / banco de dados embutido na memória com suporte a pesquisa de texto completa pode fazer o truque. Desde que é Net, eu recomendo SQLite ADO.Net Provider como o concorrente de código aberto. É muito bom (Suporte LINQ antes de qualquer outro fornecedor lá fora, suporte em tempo de design, etc.), e os FTS suporte está em desenvolvimento muito ativo. Acho que o Google está a trabalhar nisso. Há também VistaDB banco de dados . Eu estou usando que, principalmente agora. Ele deve ter o apoio do STF. Totalmente Net, o que lhe confere algumas vantagens de integração.

Se você tem que fazê-lo sozinho livros de check-out no Information Retrieval . Eu li alguns, mas não sei nada que se destaca da multidão. Amazon pode ajudar lá.

Outras dicas

Eu escrevi um motor de busca na F # usando apenas algumas linhas de código. Você pode ler sobre isso em meu cartaz e acesso a plena implementação em

home page do Stefan Savev

A idéia básica é mostrado no código abaixo, mas mais explicações são realmente necessários do que o próprio código. Aqueles que estão disponíveis no meu site também.

Este código cria o índice no disco de uma coleção de documentos. A indexação é feita em memória externa.

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top