有没有关于如何在 F# 中构建全文搜索引擎的好例子(网站或书籍)?
Michiel Borkent
问问题
978 次
2 回答
1
你想自己写这个吗?还是您只需要该功能?
如果您需要该功能,支持全文搜索的嵌入式/内存数据库可能会解决问题。由于它是 .Net,我推荐SQLite ADO.Net Provider作为开源竞争者。它非常好(在任何其他提供者之前支持 LINQ、设计时支持等),并且 FTS 支持正在非常积极的开发中。我认为谷歌正在努力。还有VistaDB 数据库。我现在主要用那个。它应该有 FTS 支持。完全是.Net,这给了它一些集成优势。
如果您必须自己做,请查看有关信息检索的书籍。我读过一些,但不知道从人群中脱颖而出。亚马逊可能会在那里提供帮助。
于 2008-09-25T09:55:25.950 回答
1
我只用几行代码在 F# 中编写了一个搜索引擎。您可以在我的海报中阅读相关内容并访问完整的实现
基本思想如下面的代码所示,但实际上比代码本身还需要更多的解释。这些也可以在我的网站上找到。
此代码在磁盘上创建文档集合的索引。索引在外部存储器中完成。
1. 让 create_postings in_name tmp_dir out_name = 2. 让 process_doc (doc_id, doc_text) = 3. doc_text |> 标记化 |> 停用词 |> 词干 4a。|> 列表.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。(有趣(_,docid_and_tf)-> docid_and_tf) 9c。(有趣的 lst -> (List.length lst, lst)) 9d。tmp_dir 9e。(外部.ElemDesc()) 10. |> 输出out_name
于 2009-08-12T02:34:15.453 回答