欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Lucene(3.5) 的幾個(gè)查詢(xún)
幾個(gè)查詢(xún)用法如下代碼:

其中

數字范圍查詢(xún):索引時(shí)字段保存為

new NumericField(name,  Field.Store.YES(NO), true(false).setIntValue( num );

Query numericRangeQuery = NumericRangeQuery.newIntRange("size", 20, 150, true, true);

時(shí)間范圍查詢(xún),其實(shí)就是數字范圍查詢(xún), 因為都知道Date是根據一個(gè)long 型變量構造出來(lái)的

所以用法同上, 只不過(guò)需要對傳入的日期格式轉換成long


  1. public class QueryTest {  
  2.     @Test  
  3.     public void testTermQuery() throws Exception {  
  4.         // Term t = new Term("content", "服裝");   
  5.         Term term = new Term("size""53");  
  6.         TermQuery termQuery = new TermQuery(term);  
  7.         doSearch(termQuery);  
  8.     }  
  9.   
  10.     @Test  
  11.     public void testRangeQuery() throws Exception {  
  12.         // 通過(guò)范圍查找, 這里比較的是字符串, 所以實(shí)際 20 比 150 大 , 即找不到結果   
  13.     //  Query termRangeQuery = new TermRangeQuery("size", "020", "150", true, true);   
  14.         //雖然可以通過(guò)給20 補0 (即 020)實(shí)現20和150的比較, 不過(guò)太麻煩, 而且不同的情況補0也不同   
  15.         //Lucene 提供了NumberTools.longToString(num), 已過(guò)時(shí)   
  16.         //查看api, NumberTools類(lèi)已被NumericUtils代替   
  17.         //修改如下還是出不來(lái)想要的結果,    
  18.         //   
  19.     //  Query termRangeQuery = new TermRangeQuery("size", NumericUtils.longToPrefixCoded(20L), NumericUtils.longToPrefixCoded(150L), true, true);   
  20.           
  21.         //結果new了半天都沒(méi)new出來(lái), 繼續查api:   
  22.         //You create a new NumericRangeQuery with the static factory methods, eg:    
  23.         //Query q = NumericRangeQuery.newFloatRange("weight", 0.03f, 0.10f, true, true);   
  24.         //換了半天總與出來(lái)了, 原因是建立索引時(shí):使用的Field, 而使用NumericRangeQuery, 必須使用NumericField:   
  25.         //api:   
  26.         //A Query that matches numeric values within a specified range. To use this,   
  27.         //you must first index the numeric values using NumericField (expert: NumericTokenStream).   
  28.         //If your terms are instead textual, you should use TermRangeQuery.    
  29.         //NumericRangeFilter is the filter equivalent of this query.   
  30.         //numericField有別于Field的幾點(diǎn):   
  31.         //NumericField size = new NumericField("size", Field.Store.YES, true);   
  32.         //size.setLongValue(file.length());   
  33.         Query numericRangeQuery = NumericRangeQuery.newLongRange("size", 20L, 150L, truetrue);  
  34.         doSearch(numericRangeQuery);  
  35.     }  
  36.   
  37.         @Test  
  38.         public void testPrefixQuery() throws Exception {  
  39.                 //Term term = new Term("content", "子");//如果存在“子”開(kāi)頭的分詞, 就符合條件查出來(lái)了   
  40.                 Term term = new Term("name""j");//如果存在“子”開(kāi)頭的分詞, 就符合條件查出來(lái)了   
  41.                 PrefixQuery prefixQuery = new PrefixQuery(term);  
  42.                 doSearch(prefixQuery);  
  43.         }  
  44.      
  45.         @Test  
  46.         public void testBooleanQuery() throws Exception    {  
  47.                 //query 1   
  48.                 //查詢(xún)時(shí)間符合以下min_time到max_time區間段的文件   
  49.                 long min_time = 1334485513724L - 1000L;  
  50.                 long max_time = 1334485513724L + 1000L;  
  51.                 Query num_range_query = NumericRangeQuery.newLongRange("date", min_time, max_time, truetrue);  
  52.           
  53.                 //query 2   
  54.                 Query termQuery = new TermQuery(new Term("name""test"));//那么重存在test   
  55.           
  56.                 //query 3   
  57.                 Query prefixQuery = new PrefixQuery(new Term("name""j"));  
  58.           
  59.                 BooleanQuery booleanQuery = new BooleanQuery();  
  60.                 booleanQuery.add(num_range_query, BooleanClause.Occur.MUST);//查詢(xún)結果一定要在以上時(shí)間范圍區間   
  61.                 booleanQuery.add(termQuery, BooleanClause.Occur.MUST_NOT);//查詢(xún)結果不能包含name=test的結果   
  62.                 booleanQuery.add(prefixQuery, BooleanClause.Occur.SHOULD);//可選項   
  63.                 doSearch(booleanQuery);  
  64.         }  
  65.     @Test  
  66.     public void testPhraseQuery() throws Exception {  
  67.         PhraseQuery phraseQuery = new PhraseQuery();  
  68.         //為什么就沒(méi)有add(term) 方法呢?   
  69.         //因為Query類(lèi)里面沒(méi)有此方法   
  70.         //Query phraseQuery = new PhraseQuery();    
  71.         String[] strs = {"quick""brown""jumped""lazy"};  
  72.         //the quick brown fox jumped over the lazy dog   
  73.         //quick--1->brown, brown--2->jumped, jumped--3->lazy, 所以slop設成3才會(huì )有結果搜到   
  74.         //前面的單詞要移動(dòng)slop次到達后面的單詞(相鄰的單詞), 需要注意的是brown-->jumped和 jumped-->brown需要的slop值不同   
  75.         //參考《Lucene 實(shí)戰(第二版)lucene in action》 P92   
  76.         phraseQuery.setSlop(3);  
  77.         for(String s: strs){  
  78.             phraseQuery.add(new Term("content", s));  
  79.         }  
  80.         doSearch(phraseQuery);  
  81.     }  
  82.       
  83.     /** 
  84.      * 使用通配符查詢(xún), 可能會(huì )降低系統性能 
  85.      * @throws Exception 
  86.      */  
  87.     @Test  
  88.     public void testWildcardQuery() throws Exception {  
  89.         //Term term = new Term("name", "ja?a");//? 匹配單個(gè)   
  90.         Term term = new Term("content""全*大");//* 匹配所有   
  91.         Query wildcardQuery = new WildcardQuery(new Term("name""j*a"));  
  92.         doSearch(wildcardQuery);  
  93.     }  
  94.       
  95.     /**  
  96.      * 模糊查詢(xún)  
  97.      * @throws Exception  
  98.      */  
  99.     @Test  
  100.     public void testFuzzyQuery() throws Exception {  
  101.         Term term = new Term("name""jeav");//通過(guò)jeav與實(shí)際字段的相似程度查詢(xún)   
  102.         Query fuzzyQuery = new FuzzyQuery(term);  
  103.         doSearch(fuzzyQuery);  
  104.     }  
  105.   
  106.     private void doSearch(Query query) throws Exception{  
  107.         Directory dir = FSDirectory.open(new File("E:/lucene/index"));  
  108.         IndexReader reader = IndexReader.open(dir);   
  109.         IndexSearcher searcher = new IndexSearcher(reader);  
  110.         TopDocs hits = searcher.search(query, 100);  
  111.         System.out.println("共找到" + hits.totalHits + "條記錄");  
  112.         ScoreDoc[] docs = hits.scoreDocs;  
  113.         for(int i = 0; i < docs.length; i++){  
  114.             int docId = docs[i].doc;  
  115.             Document doc = searcher.doc(docId);  
  116.             System.out.println("name: " + doc.get("name"));  
  117.             System.out.println("size: " + doc.get("size"));  
  118.             System.out.println("content: " + doc.get("content"));  
  119.         }  
  120.         searcher.close();  
  121.     }  
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
關(guān)于lucene 結構及內層的研究(一)
java搜索引擎lucene學(xué)習筆記 --水木尤寒的博客
Lucene搜索方法總結 - Java綜合 - Java - ITeye論壇
Lucene
Lucene查詢(xún)使用(五)
使用 Apache Lucene 搜索文本 - - JavaEye技術(shù)網(wǎng)站
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久