1、query种类
TermRangeQuery(不能搜数字)、NumericRangeQuery.newIntRange、PrefixQuery(前缀搜索)
WildcardQuery(通配符搜索):?和*,?表示匹配一个字符,*表示匹配任意多个字符
BooleanQuery:连接搜索,可以连接多个搜索。*Occur.MUST表示必须出现;* Occur.SHOULD表示可以出现 ;* Occur.MUSE_NOT表示不能出现
BooleanQuery query = new BooleanQuery();
query.add(new TermQuery(new Term("name","zhangsan")), Occur.MUST_NOT);
query.add(new TermQuery(new Term("content","game")),Occur.SHOULD);
TopDocs tds = searcher.search(query, num);
PhraseQuery:短语搜索,只支持英文,因为是以空隔分词的。
PhraseQuery query = new PhraseQuery();
query.setSlop(3); // 设置空格数(跳数)
query.add(new Term("content","pingpeng"));
//第一个Term
query.add(new Term("content","i"));
FuzzyQuery:模糊查询。
默认匹配字符串中一个不匹配的情况,超过1个就查不到了。
2、QueryParser
最常用的搜索
但是不能匹配数字。