全文搜索引擎 XunSearch
fmms 13年前
<h3 id="-xunsearch">关于 xunsearch</h3> <p>Xunsearch 是一个高性能、全功能的全文检索解决方案。</p> <h4 id="xunsearch-">Xunsearch 旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。</h4> <p>Xunsearch 中文译名为“<strong>迅搜</strong>”,代码中的经常被缩写为 <strong>XS</strong>,既是英文名称的缩略也是中文声母缩写。这儿的“迅”是快速的意思,至少包含了两层涵义:其一代表了搜索结果的响应能力,其二则为二次开发难度、速度。</p> <p>Xunsearch 采用结构化分层设计,包含后端服务、前端开发包两大部分,层次清晰而不交叉。其中后端是采用 C/C++ 编写的守护进程,而前端采用最为流行的脚本语言 PHP ,对于 web 搜索项目更为方便。具体参见<a href="/misc/goto?guid=4958199199184640895">架构设计</a>。</p> <p>Xunsearch 极大程度降低的搜索开发的难度,除了常规的中文分词、字段检索、布尔语法等功能外,还比其它免费的解决方案提供了用户急需的相关搜索、拼音搜索、结果高亮、搜索建议等等。具体的清单请参见我们的<a href="/misc/goto?guid=4958199199931527889">功能列表</a>。</p> <p>Xunsearch 真正全面开源,并使用最流行的开源许可协议 GPL 发布。您可以免费获取本项目的全部源代码,自由的使用它,并在许可条件下修改和再分发,具体参见<a href="/misc/goto?guid=4958199200662649670">授权声明</a>文件。</p> <h3 id="-">特色和优势</h3> <p>我们追求的最大特色是:<strong>快</strong>,搜索响应快,开发上手快。</p> <ol> <li> <p>支持海量数据,高速搜索响应,敬请参见 Xapian 里的 <a href="/misc/goto?guid=4958189836818275402">Scalability</a>。据描述单库最多支持 40 亿条数据,在 500 万网页大约 1.5TB 的数据中,非缓存情况下检索时间不超过 1 秒。</p> </li> <li> <p>健壮的后端守护程序,内置缓存设计,事件模型基于 libevent。</p> </li> <li> <p>内置专为搜索而自主开发的 scws 中文分词,搜索效果好,又能保障查全率。</p> </li> <li> <p>后端采用稳定高效的 C/C++ 开发,前端采用流行的 PHP 脚本语言,堪称最佳组合。</p> </li> <li> <p>极低的开发难度,接口简单易用,而且文档规范、全面。</p> </li> <li> <p>与 Lucene, Sphinx 之类相比较,Xunsearch 提供了更丰富而必需的功能,开发周期更短。</p> </li> <li> <p>功能强大,内置了大量只有商业、大型搜索引擎才提供的功能。支持包括字段检索、结果高亮、字段排序、布尔语法、区间检索、聚合搜索、<strong>相关搜索</strong>、权重微调、<strong>拼音搜索</strong>、<strong>搜索建议</strong>等等专业搜索引擎具备的功能。</p> </li> </ol> <h3 id="ch0">1. 应用领域<a class="anchor" name="ch0"></a></h3> <p>前提是要有一定的 PHP (或其它对应的 SDK 语言) 开发能力,并备有 Unix 类型操作系统的服务器至少一台。</p> <p>Xunsearch 可以帮助您建立各种行业门户/垂直搜索、BBS 论坛搜索、CMS/Web站内搜索、文档/文献资料检索,以及各种基于现有数据库系统的全文检索。</p> <h3 id="ch1">2. 历史渊源<a class="anchor" name="ch1"></a></h3> <p>大约在 2006 年创始人 <a href="/misc/goto?guid=4958199202067340559">hightman</a> 开始了全文检索的相关探索,先是发布了纯 PHP 实现的中文分词代码,之后又推出了 MySQL/MyISAM 全文索引的中文分词补丁 <a href="/misc/goto?guid=4958199202805062700">MyFT</a>。经过一系列不断完善和改进后,于 2007 年正式发布中文分词项目 <a href="/misc/goto?guid=4958199203537763186">scws</a> 并一直维护至今。</p> <p>起初开发分词的目的就是为了解决中文的全文检索,全文检索技术虽然已经趋于成熟,但多为商业产品。免费开源、并且要好用的还真难找了,于是萌动了自己开发全文检索的念头。2008 年推出了比较粗糙的搜索解决方案 <a href="/misc/goto?guid=4958199204276631059">FTPHP</a>,之后于 2010 年又开启了 <a href="/misc/goto?guid=4958199205007963821">Xungle</a> 项目,直接免去各种技术需求,为用户提供包含软硬环境在内的搜索服务。</p> <p>在 Xungle 项目的运作过程中,我们发现还有大量的用户出于各种原因,不得不自行解决搜索技术。此外,我们发现了国外一个优秀的开源搜索引擎基础库 <a href="/misc/goto?guid=4958199205745426747">Xapian</a>,它采用 C/C++ 开发,并且性能卓越,久经考验。但是并没有整合中文分词,并且开发难度、复杂度也较大。于是我们下决心整合 Xapian 和 Scws,并在此基础上提供更多、更常用的搜索功能。这就是 <code>Xunsearch</code> ,目前版本发布正在准备中,代码也已托管到 <a href="/misc/goto?guid=4958199206486828133">github</a> 中。</p> <h3 id="ch2">3. 开发团队<a class="anchor" name="ch2"></a></h3> <p>本项目由杭州云圣网络科技公司创立并维护,同时也是唯一就 Xunsearch 提供相应的商业技术服务、支持的公司。</p> <h3 id="ch3">4. 致谢<a class="anchor" name="ch3"></a></h3> <p>是大量 xungle 用户的提议促使我们开启 xunsearch 项目,Xunsearch 的往后发展将离不开广大用户的支持,还要特别感谢在此其间义务参与 xunsearch 内测的一些朋友。</p> <p>Xunsearch 底层采用 C/C++ 编写,其中用到了许多其它优秀项目,在线特别感谢它们的团队和作者。主要有以下几个:</p> <ul> <li><a href="/misc/goto?guid=4958199205745426747">xapian-core</a> 这是 Xunsearch 的底层索引设计方案</li> <li><a href="/misc/goto?guid=4958199203537763186">scws</a> 默认内置的中文分词解决方案</li> <li><a href="/misc/goto?guid=4958199208587875443">libevent</a> 后端服务器的事件处理模型</li> <li><a href="/misc/goto?guid=4958187734501359851">nginx</a> 搜索服务器的设计借鉴了 nginx 的方式,采用多进程、多线程混合用于处理高并发请求</li> <li><a href="/misc/goto?guid=4958190863365418330">Yii</a> 非常优秀的 PHP 开发框架,xunsearch 官网采用该框架,文档组织形式也参考自 Yii</li> </ul>