05 2012 档案

摘要:Lucene中索引阶段Boost的值会被存放在.nrm文件中,用16进制打开就能看的到。每个Boost值最终会被保存于一个Byte中,如果细心的同学就会发现在SetBoost的时候参数类型是float,float是四个字节的,也就是说最后会有精度丢失。废了方便查询给出代码和0-255对应的float下面是换算的代码: public static sbyte FloatToByte315(float f) { int num = BitConverter.ToInt32(BitConverter.GetBytes(f), 0); ... 阅读全文
posted @ 2012-05-22 15:31 today4king 阅读(1470) 评论(0) 推荐(0) 编辑
摘要:今天写了个单元测试,看看权重的变化,结果发现索引的时候啥都好好的,索引完拿出来看都是1,困惑了好一会,还好lucene的文档给出了解释:getBoostpublic float getBoost()Returns, at indexing time, the boost factor as set by setBoost(float).Note that once a document is indexed this value is no longer available from the index. At search time, for retrieved documents, thi 阅读全文
posted @ 2012-05-15 17:56 today4king 阅读(1467) 评论(2) 推荐(0) 编辑
摘要:Stone_W 同学写了一篇《LINQ能不能用系列(一)数组筛选效率对比》错误一:作为对比测试,测试数组应该为同一个,否则测试数据没有可比性错误二:对比组中对List的使用不对,List默认创建的数组大小为4,每次增长为4,那么这里就会反复重新创建新的数组次数为log10000000次左右当然会比Linq慢很多错误三:面对Linq接近0毫秒的处理能力,稍微有点经验的同学就知道这是不可能的,除非是很强很强的计算机,至于为什么后面给出答案,总之linq查询里肯定有猫腻,直接调用tolist()强制返回结果再说;//这里Stone W在评论中对ToList有质疑,我之所以ToList是为了和第二组进 阅读全文
posted @ 2012-05-08 18:28 today4king 阅读(2896) 评论(10) 推荐(4) 编辑
摘要:入门第一式:IndexReader.Open(Dir,readOnly);当readOnly为true的时候效率最高,最好不要用Reader删除修改记录;入门第二式:reader.Reopen(readOnly);优点:比第一式效率高,推荐使用;缺点:前提是需要有Reader存在;入门第三式:writer.GetReader();优点:NRL的实现,对实时性要求高的不二选择;缺点:writer说它很痛苦,因为每次调用内部都会flush一次以保证所有index会被启用;追求效率(中阶): public class IndexReaderProxy { ... 阅读全文
posted @ 2012-05-03 18:27 today4king 阅读(666) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
主题色彩