WEBUS2.0 In Action - 索引操作指南(2)
上一篇:WEBUS2.0 In Action - 索引操作指南(1) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(1)
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);如果要删除一个文档,可以通过以下两种方式:
writer.Delete(doc); //Delete by doc object
or
writer.Delete(); //Delete by doc Id这里实际上并非物理删除, 只是对选定的记录标记为"删除", 因此可以随时撤销删除.
对应的,撤销删除也有两种方式:
writer.Undelete(doc);
or
writer.Undelete();在WEBUS中不能直接对一个文档的索引进行修改,因此只能够以先删除,再添加的方式来进行操作。
4. 索引各种数据格式
WEBUS内置了丰富的类型处理机制,因此能够直接处理非常多的类型:
包括: string, char, int, uint, double, float, long, short, ushort, object, datetime, timespan, IPAddress等.
这些类型都能够作为值赋给Field的Value属性。
5. 字段属性的作用
Field一共有7个属性,分别是:None、Index、Analyse、Sort、Unstore、Compress和Default。属性之间可以任意搭配,除了Index和Analyse搭配在一起会对WEBUS的处理过程产生影响外,其他的搭配都不会相互影响。Default是一个复合属性,它等于Index | Sort。
具体说明如下:
None:无属性
Index:字段需要编制索引
Analyse:字段在编制索引时需要利用分析器进行分析
Sort:字段需要排序
Unstore:字段需要保存
Compress:字段需要压缩
Default:Index和Sort的组合
6. 调整性能参数
对WEBUS索引器调整性能应该将注意力放在磁盘IO优化上面. 在编制索引的过程中, 索引器引擎会经历Dump, Merge的循环. 因此设置一个优化的Dump和Merge参数将有助于提高索引性能.
Dump - 索引器在编制索引的时候首先会将Doc添加到内存中, 只有达到了DumpDocs的限制时, 才从内存将索引数据回写到磁盘上, 同时还受到DumpSize的限制. 比如DumpDocs = 100, DumpSize = 10, 那么当第100个Doc添加到索引时, Dump过程将开始运行, 它会在内存中检索每个关键词的索引项列表. 如果列表长度超过DumpSize, 则会将这个关键词连同索引项列表一并从内存回写到磁盘上, 并释放这块内存空间.
Merge - 当Merge过程发生时, 索引器会将小的片段尽量合并成大的文件. 具体如何合并就要看MergeFactor是怎么设置的了. 默认值是2, 意思就是当有两个同级别索引时, 就会合并成一个大索引. 比如: 每个索引初始大小10, MergeFactor = 2, 100个文档, 索引及合并过程将是:
10, 10 => 20 -> 20, 10 -> 20, 10, 10 => 20, 20 => 40 -> 40, 10 -> 40, 10, 10 => 40, 20 -> 40, 20, 10 -> 40, 20, 10, 10 => 40, 20, 20 => 40, 40 => 80 -> 80, 10 -> 80, 10, 10 => 80, 20
=> merge
-> indexing
7. 小结
到此为止我详细介绍了WEBUS2.0 的索引操作, 包括:
索引类, 理解索引过程, 添加/删除/撤销和修改, 数据格式, 索引字段属性以及性能调整. 其实在使用的过程中你将会发现更多有意思又容易理解的功能特性, 怎么样? 赶快下载来试试吧?
下载地址: http://www.gdtsearch.com/downloads/WEBUS2.0_latest.zip
相关信息及WEBUS2.0 SDK下载:继续我的代码,分享我的快乐 - WEBUS2.0
WEBUS2.0 In Action - 索引操作指南(2)的更多相关文章
- WEBUS2.0 In Action - 搜索操作指南 - (1)
上一篇:WEBUS2.0 In Action - 索引操作指南(2) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(2) 1. IQueriable中内置的搜索功能 在Webus ...
- WEBUS2.0 In Action - 搜索操作指南 - (3)
上一篇:WEBUS2.0 In Action - 搜索操作指南(2) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(4) 3. 评分机制 (Webus.Search.IHitSc ...
- WEBUS2.0 In Action - 搜索操作指南 - (4)
上一篇:WEBUS2.0 In Action - 搜索操作指南(3) 6. 搜索多个索引 为了提升性能, 我们可以从多个索引同时进行搜索, Webus.Search.MultiSearcher提供了相 ...
- WEBUS2.0 In Action - 搜索操作指南 - (2)
上一篇:WEBUS2.0 In Action - 搜索操作指南(1) | 下一篇:WEBUS2.0 In Action - 搜索操作指南(3) 2. 使用Query Query是所有查询的基类, 它一 ...
- WEBUS2.0 In Action - [源代码] - C#代码搜索器
最近由于工作的需要, 要分析大量C#代码, 在数万个cs文件中搜索特定关键词. 这是一项非常耗时的工作, 用Notepad++要运行接近半个小时. 于是我利用WEBUS2.0 SDK创建了一个代码搜索 ...
- 【转】WF4.0实战系列索引
转自:http://www.cnblogs.com/zhuqil/archive/2010/07/05/wf4-in-action-index.html 此系列的工作流文件案例比较多点,实用性好. W ...
- Struts2.0 去掉action后缀名
刚刚接触Struts2.0,发现默认请求都会带着后缀名:action 就如下图,url地址中会暴露login.action(请原谅struts拼写错误..) 作为一个URL简洁爱(chu)好(nv)者 ...
- ASP.NET MVC 4.0的Action Filter
有时候你想在调用action方法之前或者action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你自定义创建action过滤器.Action过滤器是自定义的Attributes,用来 ...
- [0] CollectionBase与索引符DictionaryBase与迭代器
对于简单数组来说,需要用固定的大小来初始化,才能使用: Animal[] myAnimal=new Animal[10]; myAnimal[0]=new Cow("Ken"); ...
随机推荐
- 集合类 Collection
1.Collection接口有两个子接口: List:保存元素顺序的线性表,允许有重复元素. Set:不记录元素的保存顺序,不允许有重复元素.数学中的集合 Collection接口中的方法如下: Co ...
- ASP.NET 将Excel导入数据库
将Excel导入数据库大致流程: Excel数据->DataSet->数据库 需要做的准备:1.FileUpload控件一个,按钮一个,如果需要即时显示那么GridView或DataGr ...
- POJ 1222
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6196 Accepted: 40 ...
- hdu 3092 Least common multiple
思路: 容易知道,分解成素数的lcm肯定是最大的,因为假设分解成2个合数,设定x为他们的 最大公约数, 那么他们的最小公倍数就要减少x倍了 然后如果是素数之间的最小公倍数,那么就只是他们的乘积,同样的 ...
- Compile a native C Android application
原文: Compile a native C Android application翻译: Zhiwei.Li 通过上网搜索,你可以发现很多种编译Android native应用的方法.我想说的是,不 ...
- lintcode:装最多水的容器
装最多水的容器 给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点 (i, ai).画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0).找到 ...
- C#格式化输出
double a = 12354.365; Console.WriteLine(string.Format("{0:f4}", a)); 输出a的四位小数
- 2011 ACM-ICPC 成都赛区解题报告(转)
2011 ACM-ICPC 成都赛区解题报告 首先对F题出了陈题表示万分抱歉,我们都没注意到在2009哈尔滨赛区曾出过一模一样的题.其他的话,这套题还是非常不错的,除C之外的9道题都有队伍AC,最终冠 ...
- Girls: different perspectives to consider
Girls: different perspectives to consider成为极品女人的十大要素The point of articles such as these isn't to dic ...
- 学了C语言,如何写个程序计算出每个月的第一个星期一对应的日期
在前面,我们分别利用泰勒公式和C标准库中的mktime()函数推算了某个特定日期所对应的星期几,刚做完这些,就又遇到了一个与日期相关的新任务: 老板把每个月例会的时间定在了每个月的第一个星期一,他让我 ...