个人觉得完全用C语言去做一个搜索引擎,是能办到,但是成本会很高。首先大家来看一个通用的搜索引擎需要哪些模块。
一. 网络爬虫
要用C语言去做一个爬虫系统,成本会非常高,很多东西都需要自己实现。而爬虫系统,个人觉得Python的Scrapy框架是一个很好的选择,从网页爬取到数据存入数据库有一条完整的链路。爬虫系统对性能的要求不高,Python完全可以胜任。
二. 倒排索引
倒排索引主要包括索引建立和索引更新。索引的数据结构以及一些算法,用C语言完全可以的,在线索引实时更新通过C语言实现效率也能高一些。
三. 检索模型
如果只需要做一个简单的检索系统,直接BM25算法就可以了。如果系统比较复杂,考虑到线上效果,那么需要结合机器学习模型或深度学习模型,考虑到检索相关性,有很多复杂的设计。不过在线部分完全可以通过C语言实现。
一般来说,做一个搜索引擎需要根据不同的模块情况而选择不同的语言实现,充分发挥各种语言的优势即可。