zoukankan      html  css  js  c++  java
  • 修改 highlighter.net1.4.0 一处Bug

    最近在做KTDictSeg 的 1.3 版本,在这个版本中做了一个用Lucene.net 搜索新闻的例子,其中生成关键词摘要用了
    highlighter.net-1.4.0版本,发现中文关键词摘要生成结果总是不对,但英文的结果是对的。没办法,只得把highlighter.net
    的源码拿出来调了一遍,最终发现问题在TokenGroup类的IsDistinct函数上。该函数源码如下
            internal virtual bool IsDistinct(Token token)
            
    {
                
    return token.StartOffset() > endOffset;
            }

    正确的代码应该是
            internal virtual bool IsDistinct(Token token)
            
    {
                
    return token.StartOffset() >= endOffset;
            }

    之所以在英文下是对的,是因为英文单词之间通常都是通过空格来分割,所以下一个单词的StartOffset一般都比前一个单词的 endOffset要大。
    而中文的情况就不同了,单词间没有空格,导致下一个单词的StartOffset等于前一个单词的endOffset。结果自然就不对了。
    后来想确认一下最新的 2.0 版本是否更改了这个Bug。结果始终没有找到源码,无奈之下只能将 2.0版本的动态库反编译看了一下,结果发现
    该处Bug在2.0版本中已经被更正。要提醒的一点是如果用 highlighter.net2.0版本,必须要使用 Lucene的2.0以上版本。

    哪位兄弟如果有highlighter.net2.0版本的源码,能否方便分享一下,先谢过了!
  • 相关阅读:
    SpringMVC的DispatcherServlet加载过程
    SpringMVC-HandlerMapping和HandlerAdapter
    FactoryBean简介
    Spring IOC过程
    redis基本数据类型和对应的底层数据结构
    工厂模式
    springmvc工作原理
    Java虚拟机系列-Java类加载机制
    2019年10月21日 数据库sql只取最新一条的数据
    洛谷 P2606 [ZJOI2010]排列计数
  • 原文地址:https://www.cnblogs.com/eaglet/p/1185704.html
Copyright © 2011-2022 走看看