szhswl
          宋針還的個人空間
          //初始化IndexSearcher
          IndexSearcher search = new IndexSearcher(path);
          //構建Term
          Term term = new Term(fieldName,value);
          //構建Query對象
          Query q = new TermQuery(term);
          //檢索
          Hits hits = search.search(q);
          //顯示查詢結果
          for(int i=0; i<hits.length(); i++)
          {
           System.out.println(hits.doc(i));
          }

          IndexSearcher的常用方法有
          search(Query q);
          search(Query q,Filter filter);
          search(Query q,Sort sort);
          search(Query q,Filter filter,Sort sort);

          Hits的常用方法有
          doc(i); //得到第i個Document
          id(i);  //得到第i個Document在lucene文件中的id號
          length(); //結果集的數量
          score(i); //第i個Doucment的文檔得分,默認顯示方式為score值越高,排得越前。score取值0-1之間
          如果想提高score的值。可以有建立索引時設置,用Field.setBoost(Float f)方法
          Field f = new Field(fieldname,value,store,tokenized);
          f.setBoost(5f);

          在lucene中,document ID 越小,查詢時所需時間越短,因為Hits的內部緩存機制。

          Lunece的常用搜索

          一、TermQuery 詞條搜索
          Query query = new TermQuery(new Term(fieldname,value));

          二、BooleanQuery 布爾搜索
          建立二個TermQuery
          Query q1 = new TermQuery(new Term(fieldname1,value1));
          Query q2 = new TermQuery(new Term(fieldname2,value2));
          建立BooleanQuery對象
          BooleanQuery query = new BooleanQuery();
          query.add(q1,BooleanClause.Occue.MUST);
          query.add(q2,BooleanClause.Occue.MUST);
          BooleanClause.Occue 有三個靜態值
          MUST,MUST_NOT,SHOULD
          must&&must = (AnB)
          must&&must_not = (A-(AnB))
          should&&should = (AuB)

          三、RangeQuery 范圍搜索
          RangeQuery query = new RangeQuery(begin,end,false);
          begin = new Term(fieldname,value);
          end = new Term(fieldname,value);
          false 表示開區間 不包括 (begin,end) true 表示閉區間 包括 [begin,end]

          四、PrefixQuery 前綴搜索
          PrefixQuery query = new PrefixQuery(new Term(fieldname,value));

          五、PhraseQuery 短語搜索
          PhraseQuery query = new PhraseQuery();
          query.add(new Term(fieldname,value));
          query.add(new Term(fieldname,value));
          還可以設置坡度,query.setSlop(int n),默認為0如查詢“鋼鐵”,可以用
          query.add(new Term(fieldname,”鋼”));
          query.add(new Term(fieldname,”鐵”));
          如想把“鋼和鐵”,“鋼與鐵”也查詢出來。可以加上query.setSlop(1);

          六、MultiPhraseQuery 多短語搜索
          MultiPhraseQuery query = new MultiPharseQuery();
          //加入短語的前綴
          query.add(new Term(fieldname,value));
          //加入短語的后綴
          query.add(new Term[] {new Term(fieldname,value), new Term(fieldname,value)});

          七、FuzzyQuery 模糊搜索
          FuzzyQuery query = new FuzzyQuery(new Term(filed,value));
          它的三個構造函數
          FuzzyQuery(Term t);
          FuzzyQuery(Term t,float 0.5f); 相似度。0-1之間
          FuzzyQuery(Term t,float 0.5f,int prefixLength);前綴必須相同的長度

          本文轉自:http://job5156.xicp.net/?p=72



          ---------------------------------------------------------------------------------------------------------------------------------
          說人之短,乃護己之短。夸己之長,乃忌人之長。皆由存心不厚,識量太狹耳。能去此弊,可以進德,可以遠怨。
          http://www.aygfsteel.com/szhswl
          ------------------------------------------------------------------------------------------------------ ----------------- ---------
          posted on 2007-12-10 19:51 宋針還 閱讀(655) 評論(0)  編輯  收藏 所屬分類: 搜索引擎
          主站蜘蛛池模板: 五河县| 霍林郭勒市| 旅游| 尼玛县| 安阳市| 黄石市| 上蔡县| 莎车县| 晋州市| 砚山县| 边坝县| 蕲春县| 嘉定区| 泽州县| 比如县| 分宜县| 邳州市| 贺州市| 林西县| 龙南县| 金昌市| 姜堰市| 巧家县| 富锦市| 来宾市| 灵石县| 资溪县| 鹿邑县| 英山县| 三都| 哈巴河县| 铜陵市| 阿鲁科尔沁旗| 聂荣县| 贵德县| 西安市| 台山市| 平江县| 金华市| 晋中市| 牟定县|