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)

ExtJS教程- Hibernate教程-Struts2 教程-Lucene教程