1.文本分词查询
@Test
public void textQuery(){
String text="我们是中国人";
String[] fields={"name","content"};
QueryParser parser= new MultiFieldQueryParser(fields, LuceneDemo.analyzer);
try {
//建立索引
LuceneDemo.createIndex();
Query query=parser.parse(text);
List<Document> documents=LuceneDemo.search(query);
for(Document document:documents){
System.out.println("文件名:"+document.get("name"));
System.out.println("文件大小:"+document.get("size"));
System.out.println("摘要内容:"+document.get("content"));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
打印结果为:
可以看到查询规则,会将文本进行分词,再根据指定查询字段去进行匹配,找出所需要的结果。
2.term查询TermQuery
Term term=new Term("content","我们是中国人");
Query query=new TermQuery(term);
打印结果为:
可以看出term不会对文本进行分词,而是直接当做关键字去进行查询,这里有点类似与SQL的模糊(%text%)查询。
3.多个term查询TermsQuery
Term term=new Term("name","wang");
Term term1=new Term("content","none");
Query query=new TermsQuery(term,term1);
打印结果为:
和Term查询基本一致,只是多了个条件。
注意:这两个条件是或者(or)的关系,也就是说只要满足其中一个条件即可。