zoukankan      html  css  js  c++  java
  • DotLucene 之 Bugs 小记[转]

    最近由于工作需要,正在啃 DotLucene 的源码……呼……七个目录兮……四万行…… 

    不过关于 Lucene 这个东东的研究与褒奖已经有好多好多,所以偶决定先写点实用的,以方便人民大众。
     
    —— 用 DotLucene 做项目不能不 De 的 Bugs 集合:

    (以 DotLucene 1.9 RC1 Build 002 alpha 为准,目前发现 Bug 三条)

    第一条:

    位置:Document\DateField.cs 75 行 | 120行

    重要度:0.1

    描述:其实不能算 Bug …… 因为注释里已经写得明明白白:查询日期不能早于1970-1-1  否则抛出异常。

    原因:想破头也没有想明白为什么,难道是因为36岁以后还在当程序员的人太少。。。

    解决方案:把上述位置 1970 改成 1900 or so . KO.

    第二条:

    位置:Document\DateField.cs 52 行

    重要度:0.2

    描述:

    此前的版本都可以正常工作,因为使用的是自定义的 "itoa" 方法。(SupportClass.Number.MAX_RADIX = = 36)

    private static int DATE_LEN = SupportClass.Number.ToString( 
                1000L * 365 * 24 * 60 * 60 * 1000, SupportClass.Number.MAX_RADIX ).Length;

    最新版本居然改成了这样:

    private static int DATE_LEN =
            System.Convert.ToString( 1000L * 365 * 24 * 60 * 60 * 100036 ).Length;

    而以上方法并不接受 2,8,10,16 以外的基数,所以只要创建了 DateField 类的实例就会抛出异常。

    原因:也许创建这个版本的家伙当天睡眠不太充足……

    解决方案:改回原来版本的实现。

    第三条:

    位置:Index\SegementTermVector.cs 83 行

    重要度:1000

    描述与原因:
    SegementTermVector.IndexOf  方法通过 Term 的 Text 进行二分查找得到该 Term 的 Index,从而在TermPositionVector 等数组中获取相应的数据(例如需要确定 Term 在数据源中的出现顺序时就会用到)。然而地球人都知道应用二分查找的前提是数组有序,上述位置中数组 terms 的顺序是倒排索引中 Term 的顺序,也就是String.CompareOrdinal 方法的顺序,而 Array.BinarySearch(Array,object) 方法使用的是 String.Compare 方法来进行比较 。举例来说:按默认实现方法,在 TermText 数组 {"C#","atom","basic","cat","dog","edge","fly"} 中二分查找 "C#" 是找不到任何结果的,对于中文的 TermText 也有类似问题。

    解决方案:实现使用 String.CompareOrdinal 方法进行比较的 IComparer ,并使用带有 IComparer 参数的 Array.BinarySearch 方法重载版本进行查找。

    注:Search.QueryTermVector 中不存在此问题,因为在 Search\QueryTermVector.cs  78 行 terms 已经事先使用 Array.Sort 方法排序,此顺序与 String.Compare 方法一致。

    原文地址:http://www.cnblogs.com/leaphy/archive/2006/02/22/335122.html
  • 相关阅读:
    学习笔记-- android动画简述
    解决android textview 混合文字、数字换行后对列不齐
    android 瀑布流效果 保存地址
    android 查看MD5、sha1值命令
    android 生成.keystore文件
    读取手机上所有应用程序并显示(APP)
    安卓学习入门地址
    用 Python 理解服务器模型(下)(转载)
    轻松学会Python列表解析式(转载)
    Python使用struct处理二进制(转载)
  • 原文地址:https://www.cnblogs.com/88223100/p/1273064.html
Copyright © 2011-2022 走看看