随笔分类 -  WEBUS

摘要:有一个大项目, 其中10个负责数据访问的service即将被淘汰, 将会替换成entity framework的方式. 这10个service一共有近130个operation. 项目中所有调用这些operation的地方都必须被替换成新的EF方式. 整个项目有47902个cs文件. 现在要做个分析, 找到所有需要修改的地方. 阅读全文
posted @ 2013-08-20 19:09 Ivan Zou 阅读(1798) 评论(1) 推荐(2) 编辑
摘要:6. 搜索多个索引 为了提升性能, 我们可以从多个索引同时进行搜索, Webus.Search.MultiSearcher提供了相关功能: public MultiSearcher(ISearcher[] searchers) {...} 我们将多个ISearcher对象传入MultiSearcher, 就可以像操作一个ISearcher对象那样进行搜索了. 阅读全文
posted @ 2013-07-30 17:31 Ivan Zou 阅读(562) 评论(0) 推荐(0) 编辑
摘要:使用OUTLOOK, 你有没有遇到过上图的问题? 多达18419封邮件! 太多了, 每次想找一个邮件都非常耗时, 想办法解决这个问题成了一件非常紧迫的事情. 利用MS Search当然可以, 但是它太heavy了, 而且不支持如逻辑搜索表达式等复杂查找功能, 怎么办? 幸运的是我有WEBUS2.0 SDK, 于是我决定自己开发一个名为Outlook Searcher (Outlook搜索精灵) 的小工具. 阅读全文
posted @ 2013-07-29 18:44 Ivan Zou 阅读(2980) 评论(10) 推荐(5) 编辑
摘要:3. 评分机制 (Webus.Search.IHitScorer) IndexSearcher在完成搜索之后会利用Webus.Search.IHitScorer来对结果进行评分. namespace Webus.Search { public interface IHitsScorer { void Score(Hits hits, Query query); } } 在进行评分时, 我们主要参考结果集hits, 同时也要参考用于搜索的query对象, 从而可以根据用户的原始查询需求来设定每个结果的权重. 阅读全文
posted @ 2013-07-25 12:31 Ivan Zou 阅读(781) 评论(0) 推荐(0) 编辑
摘要:2. 使用Query Query是所有查询的基类, 它一共有如下7种实现, 这些实现都在Webus.Search.Queries命名空间下面: 类型 描述 范例 TermQuery 字段关键词查询, 提供字段名和关键词即可进行查询. //查找所有名字为"张三"的记录 new TermQuery("Name", "张三"); 阅读全文
posted @ 2013-07-23 23:53 Ivan Zou 阅读(1072) 评论(0) 推荐(0) 编辑
摘要:1. IQueriable中内置的搜索功能 在Webus.Index.IQueriable中内置了一些基本的搜索功能: public interface IQueriable { Document SelectDoc(); //获取第一个Document对象, 作为样本 List SelectDoc(int[] docIds); //根据docId获取Document List SelectIndex(string fieldname, string keyword, int length); //在指定字段中根据关键词搜索, 只返回指定长度的数据 List SelectPostfixKeyword(string postfix); //搜索满足后缀条件的关键词 List SelectPrefixKeyword(string prefix); //搜索满足前缀条件的关键词 阅读全文
posted @ 2013-07-22 14:22 Ivan Zou 阅读(1076) 评论(0) 推荐(0) 编辑
摘要:最近由于工作的需要, 要分析大量C#代码, 在数万个cs文件中搜索特定关键词. 这是一项非常耗时的工作, 用Notepad++要运行接近半个小时. 于是我利用WEBUS2.0 SDK创建了一个代码搜索器程序, 非常方便的完成了这项工作. 阅读全文
posted @ 2013-07-18 21:56 Ivan Zou 阅读(2103) 评论(11) 推荐(2) 编辑
摘要:3. 添加、删除、撤销删除和修改文档 在WEBUS中要将文档添加到索引中,有且仅有一种方法: //Create a document Document doc = new Document(); doc.Fields.Add(new Field("Title", title, FieldAttributes.Index)); doc.Fields.Add(new Field("Html", html, FieldAttributes.Index | FieldAttributes.Analyse)); doc.Fields.Add(new Field("Url", url, FieldAttributes.Sort)); //Add doc to index IIndexable writer = new IndexManager(); writer.Add(doc); 如果要删除一个文档,可以通过以下两种方式: 阅读全文
posted @ 2013-07-17 10:35 Ivan Zou 阅读(492) 评论(0) 推荐(0) 编辑
摘要:通过前一篇文章,我们知道了WEBUS的索引数据都在一个虚拟的目录(IDirectory)中得以保存。本篇将继续前文,详细解析索引中的数据类型。 为了同时实现关键词搜索和范围搜索,WEBUS的索引采取了“主索引(Master Index)+序列(Sequence)”的方式进行组织... 阅读全文
posted @ 2008-01-21 16:56 Ivan Zou 阅读(1835) 评论(3) 推荐(0) 编辑
摘要:WEBUS的索引数据全部保存在一种抽象的目录结构中,它既支持实际物理目录,也支持以流(System.IO.Stream)作为数据载体的逻辑目录...物理目录, 逻辑目录, 逻辑流... 阅读全文
posted @ 2008-01-15 15:06 Ivan Zou 阅读(1772) 评论(1) 推荐(0) 编辑
摘要:当索引建好之后,要利用WEBUS2.0实现基本搜索功能,至少需要用到如下几个类和接口: Webus.Index.IQueriable (接口) Webus.Index.IndexManager (类,实现IQueriable)... 阅读全文
posted @ 2008-01-05 10:35 Ivan Zou 阅读(2795) 评论(9) 推荐(0) 编辑
摘要:WEBUS2.0只能够将一种Document数据类型(Webus.Index.Document类)添加到索引中,所有其他类型的数据(如txt、html、word、pdf等等)都需要预先转换成Document才能够对其编制索引... 阅读全文
posted @ 2008-01-03 10:47 Ivan Zou 阅读(2118) 评论(1) 推荐(0) 编辑
摘要:作为程序员,真的很快乐。不用太多happy活动,闲下来写一些自己感兴趣的代码,就足以自娱自乐了。WEBUS就是这样的代码,自从两年前开始研究搜索引擎技术,它就开始伴我度过无数个闲暇时光,而今已经开发到2.0版本了。最近闲逛到好友zhuweisky的博客,看到他早期的一篇文章,说到每个优秀的程序员应该积累一套自己的类库,使我颇受鼓舞。回想我们共事时的点点滴滴已经感慨万千,没有想到现在他的文字依旧能够给我如此触动,让我决定继续我的代码,分享我的快乐。WEBUS2.0 Search Engine SDK 简介用.Net开发搜索引擎系统,我们可以选择Lucene.Net,不过我不习惯里面的Coding 阅读全文
posted @ 2008-01-02 16:51 Ivan Zou 阅读(2889) 评论(5) 推荐(1) 编辑