exemplo motor completo texto de pesquisa na F #?
-
02-07-2019 - |
Pergunta
Existem exemplos bons (sites ou livros) em torno de como construir um motor de busca de texto completo em F #?
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
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