1.文本分词查询
@Testpublic void textQuery(){ String text="我们是中国人"; String[] fields={"name","content"}; QueryParser parser= new MultiFieldQueryParser(fields, LuceneDemo.analyzer); try { //建立索引 LuceneDemo.createIndex(); Query query=parser.parse(text); Listdocuments=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)的关系,也就是说只要满足其中一个条件即可。