Existe-t-il de bons exemples (sites Web ou livres) sur la façon de créer un moteur de recherche de texte intégral en F #?Exemple de moteur de recherche de texte intégral en F #?
Répondre
Voulez-vous écrire ceci vous-même? Ou avez-vous simplement besoin de la fonctionnalité?
Si vous avez besoin de cette fonctionnalité, une base de données intégrée/en mémoire avec prise en charge de la recherche en texte intégral peut faire l'affaire. Comme c'est .Net, je recommanderais SQLite ADO.Net Provider en tant que candidat open-source. C'est vraiment bien (Support LINQ avant tout autre fournisseur, support au design, etc.), et le support FTS est en développement très actif. Je pense que Google travaille là-dessus. Il y a aussi VistaDB Database. J'utilise ça principalement maintenant. Il devrait avoir un support FTS. Entièrement .Net, ce qui lui donne des avantages d'intégration.
Si vous devez le faire vous-même, consultez les livres au Information Retrieval. J'en ai lu quelques-uns, mais je ne sais rien qui se démarque de la foule. Amazon pourrait aider là-bas.
J'ai écrit un moteur de recherche en F # en utilisant seulement quelques lignes de code. Vous pouvez lire à ce sujet dans mon affiche et accéder à la pleine mise en œuvre
L'idée de base est indiqué dans le code ci-dessous, mais plus d'explications réellement nécessaires que le code lui-même. Ceux-ci sont également disponibles sur mon site Web.
Ce code crée l'index sur le disque d'une collection de documents. L'indexation est effectuée dans la mémoire externe.
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
Je veux que je m'écrive pour avoir une expérience d'apprentissage. –