<source id="4vppl"><ins id="4vppl"></ins></source>
<u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
<object id="4vppl"></object>
  • <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

    <object id="4vppl"></object>
    <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

      <i id="4vppl"><thead id="4vppl"></thead></i>

      <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>

      當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > Lucene進階:and 和or的條件查詢

      Lucene進階:and 和or的條件查詢
      2010-01-13 23:10:41  作者:  來源:
        在用Lucene實現全站搜索的過程中,很可能會遇到這樣的問題,只所有某種特定的信息資源,而不是全部.如:某綜合性站點,有新聞,產品,論壇,Blog,視頻等資源,而搜索的時候先選一個類型(下拉列表),再輸入關鍵字進行搜索(當然,這種情況可以直接用sql來實現,我們這里是基于lucene的實現考慮).這種情況下,就要用到and和or的查詢了.這里假設索引已經建立好了(如何建立索引請參考:http://www.javaeye.com/topic/125599),索引字段為title(標題), type(資源類型,表示新聞還是產品,product為產品,news表新聞),則實現方法如下:
      Java代碼 復制代碼
      1. /**  
      2. * 根據信息分類和關鍵詞進行查詢  
      3. * @param type,資源的類型,其值為news或product  
      4. * @param searchKey,搜索的關鍵字  
      5. * @return Hits  
      6. */  
      7. public Hits executeSearch(String type,String keyword)   
      8. {   
      9.   Hits result = null;   
      10.   if(type != null && !type.equals("") && keyword != null && !keyword.equals(""))   
      11.   {   
      12.     try    
      13.     {   
      14.       //根據關鍵字構造一個數組   
      15.       String[] key = new String[]{keyword,type};   
      16.       //同時聲明一個與之對應的字段數組   
      17.       String[] fields = {"title","type"};   
      18.       //聲明BooleanClause.Occur[]數組,它表示多個條件之間的關系   
      19.       BooleanClause.Occur[] flags=new BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur.MUST};   
      20.       ChineseAnalyzer analyzer = new ChineseAnalyzer();   
      21.       //用MultiFieldQueryParser得到query對象   
      22.       Query query = MultiFieldQueryParser.parse(key, fields, flags, analyzer);   
      23.       //c:/index表示我們的索引文件所在的目錄   
      24.       IndexSearcher searcher = new IndexSearcher("c:/index");   
      25.       //查詢結果   
      26.       result = searcher.search(query);   
      27.     } catch (Exception e)   
      28.     {   
      29.       e.printStackTrace();   
      30.     }   
      31.   }   
      32.   return result;   
      33. }  

      這里需要注意的就是BooleanClause.Occur[]數組,它表示多個條件之間的關系,BooleanClause.Occur.MUST表示and,BooleanClause.Occur.MUST_NOT表示not,BooleanClause.Occur.SHOULD表示or.
      安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
      国产午夜福三级在线播放_亚洲精品成a人片在线观看_亚洲自慰一区二区三区_久久棈精品久久久久久噜噜
      <source id="4vppl"><ins id="4vppl"></ins></source>
      <u id="4vppl"><sub id="4vppl"><label id="4vppl"></label></sub></u>
      <object id="4vppl"></object>
    1. <u id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></u>

      <object id="4vppl"></object>
      <b id="4vppl"><sub id="4vppl"><tr id="4vppl"></tr></sub></b>

        <i id="4vppl"><thead id="4vppl"></thead></i>

        <thead id="4vppl"><li id="4vppl"><label id="4vppl"></label></li></thead>
        在线观看黄aⅴ免费观看 | 亚洲欧洲日本精品中文a∨ 亚洲免费在线观看 | 思思99精品国产自在现线 | 先锋影音资源影音中在线不卡 | 五月天婷婷综合视频在线观看 | 亚洲日韩日本一区二区 |