这里先假设读者对Lucene的使用比较熟悉的。
由于代码量比较多,这里我只写出一些关键的代码,全部源码请到这里下载:
请将下载到的索引库解压后放到sdcard根目录下
源码里边的注释写的也比较详细
在andorid里实现字体高亮,若单独实现其实不是很难,但若和lucene结合使用,实现被搜索的关键字高亮,就有些麻烦事。原因在于,关键字高亮是有lucene提供的一个类(Highlighter)来管理。它的实现方式其实很简单,就是将关键字用html标签包裹起来。下边先来看一下几段关键性的代码
1.先定义一对html标签,用两个String常量来保存
private static final String STARTTAG = "<font color='red'>";
private static final String ENDTAG = "</font>";
2.通过SimpleHTMLFormatter类,我们可以设置高亮文本的样式,它返回一个Formatter类
Formatter formatter = new SimpleHTMLFormatter(STARTTAG, ENDTAG);
3.设置query对象,在query对象中,有查询的关键字
Scorer scorer = new QueryScorer(query);
4.新建一个Highlighter类,并设置参数
Highlighter highlighter = new Highlighter(formatter, scorer);
// 设置高亮后的字符长度
highlighter.setTextFragmenter(new SimpleFragmenter(length));