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 //BinaryDocValuesField doc.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")); } } }