lucene4.6查询实例

来源:互联网 发布:淘宝网提示证书错误 编辑:程序博客网 时间:2024/05/07 14:04
package com.jiepu.lucene_49;import java.io.IOException;import org.apache.lucene.analysis.Analyzer;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.document.DoubleField;import org.apache.lucene.document.Field;import org.apache.lucene.document.StringField;import org.apache.lucene.document.TextField;import org.apache.lucene.index.DirectoryReader;import org.apache.lucene.index.IndexReader;import org.apache.lucene.index.IndexWriter;import org.apache.lucene.index.IndexWriterConfig;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.ScoreDoc;import org.apache.lucene.search.TopDocs;import org.apache.lucene.search.WildcardQuery;import org.apache.lucene.store.Directory;import org.apache.lucene.store.RAMDirectory;import org.apache.lucene.util.Version;public class TestRegQuery {public static void main(String[] args) throws IOException {Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);Directory directory = new RAMDirectory();//directory=FSDirectory.open(new File(""));IndexWriterConfig config=new IndexWriterConfig(Version.LUCENE_43, analyzer);IndexWriter iwriter = new IndexWriter(directory, config);Document doc = new Document();//StringField//DoubleField//BinaryDocValuesFielddoc.add(new TextField("name", "text 麻痹的 addd  dd ", Field.Store.YES));doc.add(new TextField("content", "我是内容1号 content text 麻痹的 addddd 你是猪 ", Field.Store.YES));doc.add(new TextField("age", "25", Field.Store.YES));doc.add(new TextField("url", "http://www.hao123.abc.com", Field.Store.YES));iwriter.addDocument(doc);Document doc2 = new Document();String text = "This is the text add   to be indexed. 你好啊 呵呵 内存索引";doc2.add(new TextField("name", text, Field.Store.YES));doc2.add(new TextField("content", "我是内容2号 content 麻痹的 addddd 你是猪 ",Field.Store.YES));doc2.add(new TextField("age", "26", Field.Store.YES));doc2.add(new TextField("url", "http://hao123.abc.com", Field.Store.YES));iwriter.addDocument(doc2);Document doc3 = new Document();doc3.add(new TextField("name", "add hello 测试的数据", Field.Store.YES));doc3.add(new TextField("content", "我是内容3号 content  addddd 你是猪 ", Field.Store.YES));doc3.add(new TextField("age", "22", Field.Store.YES));doc3.add(new TextField("url", "http://www.baidu.com", Field.Store.YES));iwriter.addDocument(doc3);iwriter.close();//directory=FSDirectory.open(new File(""));IndexReader indexReader =DirectoryReader.open(directory) ;//一般系统中reader使用单例模式IndexSearcher searcher = new IndexSearcher(indexReader);//BooleanQuery booleanQuery = new BooleanQuery();//NumericRangeQuery ageQuery = NumericRangeQuery.newIntRange("age", new Integer(20), new Integer(30), true, false);//booleanQuery.add(new BooleanClause(ageQuery, BooleanClause.Occur.MUST));WildcardQuery query=new WildcardQuery(new Term("name","*add*"));//String regex="http://*com/";//Term t=new Term("url",regex);//RegexQuery query=new RegexQuery(t);TopDocs topDocs = searcher.search(query, 100);ScoreDoc[] scoreDocs = topDocs.scoreDocs;System.out.println("size="+scoreDocs.length);for(int i=0;i<scoreDocs.length;i++) {Document document = searcher.doc(scoreDocs[i].doc);System.out.println(document.get("content"));}}}

0 0