F#中的全文搜索引擎示例?
时间:2020-03-06 14:42:42 来源:igfitidea点击:
关于如何在F#中构建全文搜索引擎,是否有任何好的示例(网站或者书籍)?
解决方案
我们要自己写吗?还是只需要功能?
如果需要此功能,则可以使用具有全文搜索支持的嵌入式/内存数据库来解决问题。由于它是.Net,因此我建议使用SQLite ADO.Net Provider作为开放源代码竞争者。真的很好(先支持LINQ,再提供其他设计时支持,等等),而FTS支持正在非常积极的开发中。我认为Google正在为此努力。还有VistaDB数据库。我现在主要在使用它。它应该有FTS支持。完全是.Net,这使它具有一些集成优势。
如果我们必须自己做,请在信息检索上结帐。我读过一些书,但是什么都不知道。亚马逊可能会在那里提供帮助。
我已经在Fusing中写了一个搜索引擎
代码。你可以在我的海报上读到
并在中访问完整的实现
Stefan Savev的主页
下面的代码显示了基本思想,但是实际上比代码本身需要更多的解释。这些也可以在我的网站上找到。
此代码在文档集合的磁盘上创建索引。
索引在外部存储器中完成。
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