|
1, 被搜索的结果中,如何取得关键字周围的数据. 例如获取第一个关键字后面的数据.例如一段字符:
我爱北京天安门,你喜欢吗.
我搜:北京 获取结果如何获取: 北京天安门 . 不要用substring或者正则解决了.那样对于大文本不是解决方案. 因为这个数据没必要全取出来
网上也有人问: 做全文检索时,想把查询到的附近的一段文本提取出来,像google那样,如何才能使性能根好? 感觉indexof substring这些东性能会很差,如果是很大的文本 不知道大家有什么根好的办法,获取什么其它组件?
按照在 term vectors 中增加了 位置和偏移信息。(Grant Ingersoll & Christoph)的bug修改后的提示.应该可以找到.
2, 高亮显示. 下面有一例子说明. 顺便把2.0的那个bug说明也贴到下面 Lucene 中文分词的 highlight 显示
下面这个需要外的包: lucene-highlighter-2.2.0.jar 支持.请下载. 否则里面关于高亮显示的都不会编译成功. 下面程序是没有问题的.结果也对.就是有版主说的问题.
lucene2.0 中文高亮的问题。新手问老问题,知道的大虾赐教:
代码: public static void main(String[] args) { try { String text="上海麦为公贸易发展有限公司"; StandardAnalyzer ssss=new StandardAnalyzer(); QueryParser queryParse = new QueryParser("company_name", ssss); SimpleHTMLFormatter sHtmlF = new SimpleHTMLFormatter("<b>", "</b>"); Highlighter hh = new Highlighter(sHtmlF,new QueryScorer(queryParse.parse("公司"))); TokenStream t=ssss.tokenStream("company_name",new StringReader(text)); Token tttt=t.next(); System.out.println(hh.getBestFragment(t,text)); } catch (Exception ex) { } } 结果: 上海麦为<b>公</b>贸易发展有限<b>公</b><b>司</b>
两个问题: 1,怎么让单字“公”不高亮。因为我只搜索了“公司” 2,怎么实现<b>公司</b>这样的高亮,而不是<b>公</b><b>司</b>
答:
用中文分词器,,,StandardAnalyzer是单字分词的 1、分词问题 2、Highlighter highlighter =new Highlighter(new SimpleHTMLFormatter("<fontcolor=red>","</font>"),new QueryScorer(query)); 需要有一个好的中文分词工具,能分出你需要的词语,然后加亮。比如你可以用ik-analyzer啊等等的。
2.0bug解决:: 22. 增加对 contrib/highlighter 的 NullFragmenter , 这对全文本加亮很有用。 (Erik Hatcher)
|
一共有 0 条评论