String Index_Store_Path = "index";
IndexWriter iw = null;
try {
iw = new IndexWriter(Index_Store_Path,new StandardAnalyzer(),true);
iw.setUseCompoundFile(false);
String[] contents = {"ab bc cd de ef fg gh","ab","ab bc","ab bc cd","ab bc cd de",
"ab bc cd de ef","ab bc cd de ef fg","ab bc bc de ef fg gh hi"};
Field f = null;
Document doc = null;
for(int i=0;i<contents.length;i++){
doc = new Document();
f = new Field("bk", contents[i], Field.Store.YES, Field.Index.TOKENIZED);
doc.add(f);
f = new Field("id", "id"+i,Field.Store.YES, Field.Index.TOKENIZED);
doc.add(f);
//通过改变激励因子更改排名 > Sort 不能同时为多个Field指定排序标准 > SortField
if(i== contents.length-1){
doc.setBoost(2f);
}
iw.addDocument(doc);
}
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (LockObtainFailedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
iw.close();
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
IndexSearcher is = new IndexSearcher(Index_Store_Path);
TermQuery tq = new TermQuery(new Term("bk", "bc"));
//多Field的排序
Sort s = new Sort();
SortField sf = new SortField("id",SortField.STRING, false);
SortField sf1 = new SortField("bk", SortField.STRING,false);
s.setSort(new SortField[] {sf,sf1});
//Query 的Field 和 Sort 的 Field 相互独立
//此Filter非Lucene分析中的过滤器
Hits hits = is.search(tq, new AdvancedSecurityFilter1(), s);
for(int i=0;i<hits.length();i++){
System.out.print(hits.doc(i).get("bk")+"\t\t");
System.out.println(hits.score(i));
System.out.println(is.explain(tq, hits.id(i)).toString());
}
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public class AdvancedSecurityFilter extends Filter {
@Override
public BitSet bits(IndexReader reader) throws IOException {
final BitSet bs = new BitSet(reader.maxDoc());
//默认为true
bs.set(0, bs.size()-1);
//代表最高级别??
Term t = new Term("id", "id2");
TermDocs td = reader.termDocs(t);
while(td.next()){
bs.set(td.doc(), false);
}
return bs;
}
}
public class AdvancedSecurityFilter1 extends Filter {
@Override
public BitSet bits(IndexReader reader) throws IOException {
final BitSet bs = new BitSet(reader.maxDoc());
//默认为true
bs.set(0, bs.size()-1);
//代表最高级别??
Term t = new Term("id", "id2");
//使用IndexReader的reader方法并不是对每个情况都适用
//使用IndexSearcher 更能随心所欲的定制过滤的Filed 及 Instance
//并且这种方法封装了底层的API 更为简洁和清晰
IndexSearcher is = new IndexSearcher(reader);
Hits hits = is.search(new TermQuery(t));
for(int i=0;i<hits.length();i++){
bs.set(hits.id(i), false);
}
return bs;
}
}
分享到:
相关推荐
lucene src&bin 2.4.1 lucene src&bin 2.4.1
解密搜索引擎技术实战Lucene&Java精华版(第3版)源码 书名:解密搜索引擎技术实战Lucene&Java精华版(第3版) 作者:罗刚 等编著 出版社:电子工业出版社 关键词:Lucene solr 搜索引擎 Lucene实战 随书源码 本书随...
Lucene 3.5&API,最新版
解密搜索引擎技术实战Lucene&Java精华版(第3版)源码 书名:解密搜索引擎技术实战Lucene&Java精华版(第3版) 作者:罗刚 等编著 出版社:电子工业出版社 关键词:Lucene solr 搜索引擎 Lucene实战 随书源码 本书随...
lucene和solr笔记
解密搜索引擎技术实战Lucene&Java精华版(第3版)源码 书名:解密搜索引擎技术实战Lucene&Java精华版(第3版) 作者:罗刚 等编著 出版社:电子工业出版社 关键词:Lucene solr 搜索引擎 Lucene实战 随书源码 本书随...
解密搜索引擎技术实战Lucene&Java精华版(第3版)源码 书名:解密搜索引擎技术实战Lucene&Java精华版(第3版) 作者:罗刚 等编著 出版社:电子工业出版社 关键词:Lucene solr 搜索引擎 Lucene实战 随书源码 本书随...
解密搜索引擎技术实战Lucene&Java精华版(第3版)源码 书名:解密搜索引擎技术实战Lucene&Java精华版(第3版) 作者:罗刚 等编著 出版社:电子工业出版社 关键词:Lucene solr 搜索引擎 Lucene实战 随书源码 本书随...
解密搜索引擎技术实战Lucene&Java精华版(第3版)源码 书名:解密搜索引擎技术实战Lucene&Java精华版(第3版) 作者:罗刚 等编著 出版社:电子工业出版社 关键词:Lucene solr 搜索引擎 Lucene实战 随书源码 本书随...
( 解密搜索引擎技术实战++Lucene&Java;精华版_---.zip ) 个人收集电子书,仅用学习使用,不可用于商业用途,如有版权问题,请联系删除!
lucene&solr原理分析,lucene搜索引擎和solr搜索服务器原理分析。
Lucene&solr简介及使用,首先介绍了lucene,之后介绍了solr,中间有各种相关插件的应用.
《解密搜索引擎技术实战——Lucene&Java;精华版(第3版)》是猎兔搜索开发团队的软件研发和教学实践的经验汇总。《解密搜索引擎技术实战——Lucene&Java;精华版(第3版)》总结搜索引擎相关理论与实际解决方案,并给...
《解密搜索引擎技术实战 LUCENE & JAVA(第3版)》┊罗刚著,高清完整PDF带书签,仅供学习参考!
包括lucene .NET4.0&盘古分词 。net可用dll,盘古分词器等
解密搜索引擎技术实践Lucene&Java;精华版(第三版)书内CD附件.
解密搜索引擎技术实践Lucene&Java;精华版(第三版)书内CD资源.
解密搜索引擎技术实践Lucene&Java;精华版(第三版)书内CD资源.
lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记lucene使用总结笔记
这里是解密搜索引擎技术实战:Lucene &Java精华版(第2版)的随书光盘,绝对完整,文件夹共1.16GB,分卷压缩上传,共9个part,这里是part2