杂 navicat ,lucene

struts2 的标签使用
 
navicat   NAVF-3IBB-VYIF-FUMI 注册码
关于lucene 下载以后 core这个包里是核心的jar  analyzar 这个包里有标准的分词器jar,一般下载下来的源码是tgz格式的压缩文件,winrar可以解压,解压后可以在压缩成zip 可以直接用
http://mirror.esocc.com/apache/ apache 的下载地址
lucene的query 可以有TermQuery : 含有某个词的指定文档数,要用到的方法是 TermQuery

范围搜索

用到的方法是

Query query = new TermRangeQuery(field,start,end,truetrue);

数字范围,使用NumericRangeQuery方法和前面的一样,只是创建Query对象不一样:

Query query = NumericRangeQuery

.newIntRange(field,start, end,true,true);

前缀搜索

方法和前面的一样,只是创建Query对象不一样:

Query query = new PrefixQuery(new Term(field,value));

精确匹配搜索

查出在某个域中,含有某个词的指定文档数,要用到的方法是TermQuery

public void searchByTerm(String field,String name,int num) {

   try {

      IndexSearcher searcher = getSearcher();

      Query query = new TermQuery(new Term(field,name));

      TopDocs tds = searcher.search(query,  num);

      System.out.println("一共查询了:"+tds.totalHits);

      for(ScoreDoc sd:tds.scoreDocs) {

          Document doc = searcher.doc(sd.doc);

          System.out.println(doc.get("id")+"---->"+

                 doc.get("name")+"["+doc.get("email")+

                 "]-->"+doc.get("id")+","+

                 doc.get("attach")+","+doc.get("date"));

      }

      searcher.close();

   } catch (CorruptIndexException e) {

      e.printStackTrace();

   } catch (IOException e) {

      e.printStackTrace();

   }

}

@Test

public void searchByTerm() {

   su.searchByTerm("content","football",3);

}

 

 

范围搜索

用到的方法是

Query query = new TermRangeQuery(field,start,end,truetrue);

其中第四个参数如果是为true,表示包含start,否则不包含。第五个参数的意思和第四个一样,只是指定的是end

public void searchByTermRange(String field, String start, String  end,

      int num) {

   try {

      IndexSearcher searcher = getSearcher();

      Query query = new TermRangeQuery(field,  start, end, truetrue);

      TopDocs tds = searcher.search(query,  num);

      System.out.println("一共查询了:" + tds.totalHits);

      for (ScoreDoc sd : tds.scoreDocs) {

          Document doc = searcher.doc(sd.doc);

          System.out.println(doc.get("id") + "---->" + doc.get("name")

                 + "[" + doc.get("email") + "]-->" + doc.get("id") + ","

                 + doc.get("attach") + "," + doc.get("date"));

      }

      searcher.close();

   } catch (CorruptIndexException e) {

      e.printStackTrace();

   } catch (IOException e) {

      e.printStackTrace();

   }

}

@Test

public void searchByTermRange() {

   //查询ID13

   su.searchByTermRange("id""1""3", 10);

   //查询namea开头和s结尾的

   su.searchByTermRange("name","a","s",10);

   //由于attachs是数字类型,使用TermRange无法查询

   su.searchByTermRange("attach","2","10", 5);

}

 

数字范围,使用NumericRangeQuery方法和前面的一样,只是创建Query对象不一样:

Query query = NumericRangeQuery

.newIntRange(field,start, end,true,true);

 

测试示例:

public voidsearchByNumRange() {

   su.searchByNumricRange("attach",2,10,5);

}

 

前缀搜索

方法和前面的一样,只是创建Query对象不一样:

Query query = new PrefixQuery(new Term(field,value));

测试方法

@Test

public voidsearchByPrefix() {

   su.searchByPrefix("content","s",10);

}

 

通配符搜索

在传入的value中可以使用通配符:?*,?表示匹配一个字符,*表示匹配任意多个字符

Query query = new WildcardQuery(new Term(field,value));

 

多条件搜索

BooleanQuery可以连接多个子查询

Occur.MUST表示必须出现

Occur.SHOULD表示可以出现

Occur.MUSE_NOT表示不能出现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值