F# での全文検索エンジンの例?
-
02-07-2019 - |
質問
F# で全文検索エンジンを構築する方法に関する良い例 (Web サイトまたは書籍) はありますか?
解決
これを自分で書きますか?それとも単にその機能が必要なのでしょうか?
この機能が必要な場合は、全文検索をサポートする組み込み/メモリ内データベースが役に立ちます。.Netなのでお勧めします SQLite ADO.Net プロバイダー オープンソースの候補者として。これは非常に優れており (他のプロバイダーよりも先に LINQ をサポートし、設計時サポートなど)、FTS サポートは非常に活発に開発中です。Googleはそれに取り組んでいると思います。もあります VistaDB データベース. 。今は主にそれを使っています。FTS サポートが必要です。完全に .Net なので、統合上の利点がいくつかあります。
自分でやらなければならない場合は、次の本をチェックしてください。 情報検索. 。何冊か読んだことがありますが、群を抜いて目立ったものは何も知りません。そこでAmazonが役に立つかもしれない。
他のヒント
数行のコードを使用して、F#で検索エンジンを作成しました。あなたは私のポスターでそれについて読むことができ、で完全な実装にアクセスできます
基本的な考え方は以下のコードに示されていますが、実際にはコード自体よりも多くの説明が必要です。それらは私のウェブサイトでも入手できます。
このコードは、ディスク上にドキュメントのコレクションのインデックスを作成します。インデックス作成は外部メモリで行われます。
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
所属していません StackOverflow