关于如何在F#中构建全文搜索引擎,是否有任何好的例子(网站或书籍)?
答案 0 :(得分:1)
你想自己写吗?或者你只需要这个功能吗?
如果您需要该功能,可以使用支持全文搜索的嵌入式/内存数据库。由于它是.Net,我建议SQLite ADO.Net Provider作为开源竞争者。这非常好(在任何其他提供商之前支持LINQ,设计时支持等),并且FTS支持正在非常积极的开发中。我认为谷歌正在努力。还有VistaDB Database。我现在主要使用它。它应该有FTS支持。完全.Net,它给它一些集成优势。
如果您必须自己查看Information Retrieval上的图书。我已经阅读了一些,但不知道从人群中脱颖而出。亚马逊可能会帮助那里。
答案 1 :(得分:1)
我用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