聽 Field.Store.COMPRESS:鐢ㄥ帇緙╃殑鏍煎紡瀛樺偍鏈鍒濈殑Field鍊?br />聽 Field.Store.NO:涓嶅瓨鍌ㄨField鐨勫師濮嬪?br />聽 Field.Store.YES:瀛樺偍璇ield鐨勫師濮嬪?br />
聽 Field.Index.NO:涓嶇儲寮旻ield鐨勫?br />聽 Field.Index.NO_NORMS:
聽 Field.Index.TOKENIZED:浣滃垎璇嶅鐞?br />聽 Field.Index.UN_TOKENIZED:涓嶅垎璇嶏紝鐩存帴浣滀負瀹屾暣鐨勪俊鎭媯绱紝鍙互鏀寔鍏ㄥ尮閰嶅拰鐩鎬技鍖歸厤錛岃窡鏁版嵁搴撲腑鐨刲ike寰堢被浼箋?br />
2,瀹炵幇Filter鎺ュ彛
聽聽聽聽public聽BitSet聽bits(IndexReader聽reader)聽throws聽IOException聽{
聽聽聽聽聽聽聽聽final聽BitSet聽bits聽=聽new聽BitSet(reader.maxDoc());//聽榛樿鎵鏈夐兘涓篺alse
聽聽聽聽聽聽聽聽//聽璁劇疆鎵鏈夌殑閮戒笉鑳芥绱㈠埌
聽聽聽聽聽聽聽聽//聽bits.set(0,聽bits.size()聽-聽1,聽false);
聽聽聽聽聽聽聽聽bits.set(3,聽true);
聽聽聽聽聽聽聽聽bits.set(4);//璁劇疆涓簍rue
聽聽聽聽聽聽聽聽int[]聽docs聽=聽new聽int[1000];
聽聽聽聽聽聽聽聽int[]聽freqs聽=聽new聽int[1000];
聽聽聽聽聽聽聽聽TermDocs聽termDocs聽=聽reader.termDocs(new聽Term("title",聽"嫻嬭瘯"));
聽聽聽聽聽聽聽聽int聽count聽=聽termDocs.read(docs,聽freqs);//
聽聽聽聽聽聽聽聽for聽(int聽i聽=聽0;聽i聽<聽docs.length;聽i++)聽{
聽聽聽聽聽聽聽聽聽聽聽聽System.out.println(docs[i]+"--"+freqs[i]);
聽聽聽聽聽聽聽聽聽聽聽聽bits.set(docs[i]);
聽聽聽聽聽聽聽聽}
聽聽聽聽聽聽聽聽return聽bits;
聽聽聽聽}
3,Term t = new Term("content", "鐢靛姏");
聽 Query query = new TermQuery(t);
聽 浠ヤ笂鎼滀笉鍒扮粨鏋?鍘熷洜鏄?鐢靛姏"涓嶆槸涓涓猅erm,鐢?鐢?鎴?鍔?鍒欏彲浠ャ?br />
4,reader.terms()榪斿洖绱㈠紩涓殑鎵鏈塼erm,娌℃湁閲嶅銆傝孴ermDocs瀛樻斁term鍏寵仈鐨凞ocTermEnum聽enumerator聽=聽reader.terms();
while聽(enumerator.next())聽{
Term聽term聽=聽enumerator.term();
System.out.println(term.field()聽+聽"聽"聽+聽term.text());
}
5,lucene涓嶆敮鎸佷腑鏂囩殑*聽 ?鍖歸厤 聽
聽 鍥犱負鑻辨枃鏄熀浜庤瘝鐨? 涓枃鏄熀浜庡瓧鐨?聽
聽 鑻辨枃mo?ey鍙互鍖歸厤鍒癿oney ,鍥犱負money鏄竴涓猼erm,聽 涓枃鎬庝箞鍔烇紵闄ら潪涓枃鏈変釜濂界殑鍒嗚瘝鏂規
6錛屼袱嬈¤繃婊ゅ悗錛宷uery瀵硅薄鐨則ostring:
filtered(filtered(title:oracle content:oracle)->com.lucene.search.PrivilegeFilter@133d0fc)->com.lucene.search.CategoryFilter@dd5415
7,Hyper Estraier鏄竴涓敤C璇█寮鍙戠殑鍏ㄦ枃媯绱㈠紩鎿?
鍏鋒湁楂橀熷害,楂樼ǔ瀹氭?楂樺彲鎵╁睍鎬?鎻愪緵java,ruby鐨勮皟鐢ㄦ柟娉?br /><榪呴熸惌寤哄叏鏂囨悳绱㈠鉤鍙扳斺斿紑婧愭悳绱㈠紩鎿庡疄鎴樻暀紼?gt;
http://www.162cm.com/archives/date/2007/07/18
8錛孒its hits = searcher.search (filteredquery, new Sort("fieldname"));//鍙牴鎹浜屼釜鍙傛暟榪涜鎺掑簭
int n=hits.id(2)聽 //鍙傛暟鏄湪hits涓殑涓嬫爣,榪斿洖鐨勭粨鏋滄槸鍦ㄨ繃婊ゅ拰鎺掑簭涔嬪墠鍦╠irectory涓殑鍘熷涓嬫爣
9錛?br />new涓涓狟itSet(950)騫朵笉絳変簬寤虹珛涓涓?50澶у皬鐨刡s
鍙槸璇存瀯寤哄嚭鏉ョ殑bs鍒濆澶у皬鑷沖皯鑳藉綰?50涓猙it,澶у皬姘歌繙鏄郴緇熸帶鍒剁殑銆傝屼笖浠栫殑澶у皬鏄?4鐨勫嶆暟錛屽氨綆桞itSet(1),浠栫殑澶у皬涔熸槸64銆?br />bitset.set(1, 4) 璁劇疆鐨勬槸1,2,3,娌℃湁4
10錛屽Field鍐嶈繘琛屽垏璇嶅氨鏄疶erm?Term鍜孴oken鐨勫尯鍒?br />
11錛孊ooleanQuery鐨勪緥瀛?
聽聽聽聽聽 BooleanQuery bq = new BooleanQuery();
聽聽聽 聽 Query q1 = new TermQuery (new Term ("field", "one"));
聽聽聽 聽 Query q2 = new TermQuery (new Term ("sorter", "b"));
聽聽聽 聽 bq.add(q1, Occur.MUST);
聽聽聽 聽 bq.add(q2, Occur.MUST);
聽聽聽 聽 Hits hits = searcher.search(bq);
聽聽聽 聽
聽12錛屽彲鐢≧AMDirectory浣滄祴璇曪紝瑙乴ucene鑷甫鐨勬祴璇?br />聽聽聽 RAMDirectory directory = new RAMDirectory();
聽聽聽 IndexWriter writer = new IndexWriter (directory, new WhitespaceAnalyzer(), true)
聽聽聽
13錛岃繘琛岃繃婊ゆ椂濡傛灉鏈夊涓猣ilter錛屽垯鏌愪釜doc鏄惁鑳芥煡鍒板彇鍐充簬榪欏涓猣ilter鍚勮嚜榪斿洖鐨刡itset鐨勭患鍚堢粨鏋滐細瑕佹煡寰楁煇涓浣嶇疆鐨刣oc錛屾墍鏈夌殑filter鐨勮浣嶅繀欏誨叏閮ㄤ負true銆傛墍浠ユ煡璇㈢粨鏋滀笌filter鐨勫厛鍚庨『搴忔棤鍏熾?br />
14錛?-鎸塽ser涓簍om榪涜榪囨護
聽聽聽 Filter f1 = new Filter() {
聽聽聽 聽聽聽 聽聽聽 public BitSet bits(IndexReader reader) throws IOException {
聽聽聽 聽聽聽 聽聽聽 聽聽聽 BitSet bitset = new BitSet(reader.maxDoc());
聽聽聽 聽聽聽 聽聽聽 聽聽聽 TermDocs termDocs = reader.termDocs();// 瀹為檯鏄疭egmentTermDocs
聽聽聽 聽聽聽 聽聽聽 聽聽聽 Term term = new Term("user", "tom");
聽聽聽 聽聽聽 聽聽聽 聽聽聽 termDocs.seek(term);//鐩稿綋浜庢寔鏈変簡鎵鏈夊惈鏈塽ser涓簍om鐨刣oc鐨勯泦鍚堬紝浣唂req()鍜宒oc()榪橀渶瑕佸幓鏂囦歡涓鍙?
聽聽聽 聽聽聽 聽聽聽 聽聽聽 while (termDocs.next()) {
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 System.out.println("freq:"+termDocs.freq());
聽聽聽 聽聽聽 聽聽聽 聽聽聽 聽聽聽 bitset.set(termDocs.doc());
聽聽聽 聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 聽聽聽 聽聽聽 return bitset;
聽聽聽 聽聽聽 聽聽聽 }
聽聽聽 聽聽聽 };
15錛孴rie錛屽張縐板崟璇嶆煡鎵炬爲錛屾槸涓縐嶇壒孌婄殑鏍戝艦緇撴瀯錛岀敤浜庝繚瀛樺ぇ閲忕殑瀛楃涓層傚畠鐨勪紭鐐規槸錛氬埄鐢ㄥ瓧絎︿覆鐨勫叕鍏卞墠緙鏉ヨ妭綰﹀瓨鍌ㄧ┖闂淬?br />http://www.javaeye.com/topic/299826
16,
doc鐩稿綋浜庤〃涓殑璁板綍
field鐩稿綋浜庡瓧孌?br />涓嶅悓鐨刣oc鍙兘鏈夌浉鍚岀殑field錛屼篃鍙兘鏈変笉涓鏍風殑
鎴戞劅瑙夋瘮杈冮傚悎鐢╦son鏍煎紡瀛樺偍
field+鍒嗚瘝鐨勫叧閿瓧=term,鏄敮涓鐨?br />term鍑虹幇鍦ㄥ摢浜沝oc涓紝绱㈠紩鏂囦歡閲屾湁璁拌澆錛?br />鐢↙uke(http://code.google.com/p/luke)鍙互鏌ョ湅绱㈠紩鏂囦歡璇︾粏淇℃伅
聽

]]>