3

有没有关于如何在 F# 中构建全文搜索引擎的好例子(网站或书籍)?

4

2 回答 2

1

你想自己写这个吗?还是您只需要该功能?

如果您需要该功能,支持全文搜索的嵌入式/内存数据库可能会解决问题。由于它是 .Net,我推荐SQLite ADO.Net Provider作为开源竞争者。它非常好(在任何其他提供者之前支持 LINQ、设计时支持等),并且 FTS 支持正在非常积极的开发中。我认为谷歌正在努力。还有VistaDB 数据库。我现在主要用那个。它应该有 FTS 支持。完全是.Net,这给了它一些集成优势。

如果您必须自己做,请查看有关信息检索的书籍。我读过一些,但不知道从人群中脱颖而出。亚马逊可能会在那里提供帮助。

于 2008-09-25T09:55:25.950 回答
1

我只用几行代码在 F# 中编写了一个搜索引擎。您可以在我的海报中阅读相关内容并访问完整的实现

Stefan Savev 的主页

基本思想如下面的代码所示,但实际上比代码本身还需要更多的解释。这些也可以在我的网站上找到。

此代码在磁盘上创建文档集合的索引。索引在外部存储器中完成。

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 回答