[置顶] lucene6按照整形数据排序搜索结果
2017-03-16 19:32
260 查看
lucene6跟早期版本有蛮大的区别,这里给出一个按照整形排序的例子,希望帮到有需要的小伙伴:
Analyzer analyzer = new StandardAnalyzer();
// 1. create the index
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action", "193398817",70);
addDoc(w, "lucene for Action", "55320055Z",80);
addDoc(w, "Managing Gigabytes", "55063554A",90);
addDoc(w, "The Art of Computer Science", "9900333X",50);
w.close();
TermQuery q1 = new TermQuery(new Term("title","Lucene in Action"));
Query q2 = IntPoint.newRangeQuery("price", 60, 100);
BooleanQuery q3 = new Builder().add(q1, Occur.SHOULD).add(q2, Occur.MUST).build();
//
QueryParser parser = new QueryParser("title",analyzer);
Query q4 = parser.parse("Lucene in Action");
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
private static void addDoc(IndexWriter w, String title, String isbn,int price) throws IOException {
Document doc = new Document();
doc.add(new TextField("title", title,Field.Store.YES));
doc.add(new StringField("isbn", isbn, Field.Store.YES));
Analyzer analyzer = new StandardAnalyzer();
// 1. create the index
Directory index = new RAMDirectory();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter w = new IndexWriter(index, config);
addDoc(w, "Lucene in Action", "193398817",70);
addDoc(w, "lucene for Action", "55320055Z",80);
addDoc(w, "Managing Gigabytes", "55063554A",90);
addDoc(w, "The Art of Computer Science", "9900333X",50);
w.close();
TermQuery q1 = new TermQuery(new Term("title","Lucene in Action"));
Query q2 = IntPoint.newRangeQuery("price", 60, 100);
BooleanQuery q3 = new Builder().add(q1, Occur.SHOULD).add(q2, Occur.MUST).build();
//
QueryParser parser = new QueryParser("title",analyzer);
Query q4 = parser.parse("Lucene in Action");
IndexReader reader = DirectoryReader.open(index);
IndexSearcher searcher = new IndexSearcher(reader);
//升序排列 TopDocs matches = searcher.search(q4, 10,new Sort(new SortField("price",SortField.Type.LONG,false))); for(ScoreDoc doc:matches.scoreDocs){ logger.info("title:"+searcher.doc(doc.doc).get("title")+"\tisbn:"+searcher.doc(doc.doc).get("isbn") +"\nprice:"+searcher.doc(doc.doc).get("price")); } index.close();
private static void addDoc(IndexWriter w, String title, String isbn,int price) throws IOException {
Document doc = new Document();
doc.add(new TextField("title", title,Field.Store.YES));
doc.add(new StringField("isbn", isbn, Field.Store.YES));
//使用IntPoint时需要同时创建同名NumericDocValuesField(排序用)以及同名StoredField对象 doc.add(new NumericDocValuesField("price",price)); doc.add(new IntPoint("price",price)); doc.add(new StoredField("price",price)); //doc.add(new LegacyIntField("price",price, Field.Store.YES)); w.addDocument(doc); }
相关文章推荐
- 按照分组排序结果操作数据
- mysql按照每天分组查询数据结果排序不是从1到31而是1后接10
- 查询结果按照 'in' 里面的数据排序:order by decode
- nutch搜索返回结果按照时间排序
- mysql 查询数据时按照A-Z顺序排序返回结果集
- [置顶] Hadoop实战演练:搜索数据分析----计算结果存储到Mysql(3)
- datatable 数据按照字段排序
- Lucene.Net2.0搜索结果排序问题
- 按照汇总结果排序问题
- 使用DataView对象来搜索,筛选、排序、浏览及编辑数据
- Lucene.net搜索结果排序(单条件和多条件)
- Lucene.net搜索结果排序(单条件和多条件)
- Lucene.net搜索结果排序(单条件和多条件)
- 实现数据按照自己的需要进行排序
- lucene-对搜索结果进行排序
- 搜索服务子系统-结果排序
- Google悄悄推行“链接 + 数据" 富内容摘要的搜索结果
- 表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图
- 搜索结果排序
- 脱机数据的排序、搜索和筛选