- /**
- * 根據信息分類和關鍵詞進行查詢
- * @param type,資源的類型,其值為news或product
- * @param searchKey,搜索的關鍵字
- * @return Hits
- */
- public Hits executeSearch(String type,String keyword)
- {
- Hits result = null;
- if(type != null && !type.equals("") && keyword != null && !keyword.equals(""))
- {
- try
- {
- //根據關鍵字構造一個數組
- String[] key = new String[]{keyword,type};
- //同時聲明一個與之對應的字段數組
- String[] fields = {"title","type"};
- //聲明BooleanClause.Occur[]數組,它表示多個條件之間的關系
- BooleanClause.Occur[] flags=new BooleanClause.Occur[]{BooleanClause.Occur.MUST,BooleanClause.Occur.MUST};
- ChineseAnalyzer analyzer = new ChineseAnalyzer();
- //用MultiFieldQueryParser得到query對象
- Query query = MultiFieldQueryParser.parse(key, fields, flags, analyzer);
- //c:/index表示我們的索引文件所在的目錄
- IndexSearcher searcher = new IndexSearcher("c:/index");
- //查詢結果
- result = searcher.search(query);
- } catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- return result;
- }
這里需要注意的就是BooleanClause.Occur[]數組,它表示多個條件之間的關系,BooleanClause.Occur.MUST表示and,BooleanClause.Occur.MUST_NOT表示not,BooleanClause.Occur.SHOULD表示or.
安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢】