3) 第一章 初识Lucene:一个简单的实例
还是看代码来的直接:
?
1. 索引
?
?
2. 搜索
?
? 1 楼 shantouyyt 2012-02-28 请问下,当索引的时候,用的是这种方式,new FileReader(f)
// 7 索引文件的文本内容
doc.add(new Field("contents", new FileReader(f)));
那当搜索结果的时候,doc.get("contents") 这样得出来的是null。。。该如何做??
是不是 先取得 doc.get("filename") 文件路径,再来读取文本里面的内容??
还有一个问题,高亮显示的时候,如果用的是 doc.add(new Field("contents", new FileReader(f))); ,这样没办法高亮了。。。
// 高亮
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>",
"</font>");
Scorer scorer = new QueryScorer(query);
Highlighter highlighter = new Highlighter(formatter, scorer);
Fragmenter fragmenter = new SimpleFragmenter(50);
highlighter.setTextFragmenter(fragmenter);
// 返回高亮后的结果,如果当前属性值没有出现关键字则出现null
String hc = highlighter.getBestFragment(analyzer, "content",
document.get("content"));
2 楼 BuN_Ny 2012-02-28 shantouyyt 写道请问下,当索引的时候,用的是这种方式,new FileReader(f)
// 7 索引文件的文本内容
doc.add(new Field("contents", new FileReader(f)));
那当搜索结果的时候,doc.get("contents") 这样得出来的是null。。。该如何做??
是不是 先取得 doc.get("filename") 文件路径,再来读取文本里面的内容??
还有一个问题,高亮显示的时候,如果用的是 doc.add(new Field("contents", new FileReader(f))); ,这样没办法高亮了。。。
// 高亮
Formatter formatter = new SimpleHTMLFormatter("<font color='red'>",
"</font>");
Scorer scorer = new QueryScorer(query);
Highlighter highlighter = new Highlighter(formatter, scorer);
Fragmenter fragmenter = new SimpleFragmenter(50);
highlighter.setTextFragmenter(fragmenter);
// 返回高亮后的结果,如果当前属性值没有出现关键字则出现null
String hc = highlighter.getBestFragment(analyzer, "content",
document.get("content"));
没有设置Store的话是需要根据filename找到文本的。文本内容过长的话,可以存一些摘要。
后面的高亮问题没懂。