4.對索引的其它操作:
indexreader類是用來操作索引的,它有對document,field的刪除等操作。
下面一部分的內容是:全文的搜尋
全文的搜尋主要是用:indexsearcher,query,hits,document(都是query的子類),有的時候用queryparser
主要步驟:
1.new queryparser(field欄位,new 分析器)
2.query query = queryparser.parser(「要查詢的字串」);這個地方我們可以用反射api看一下query究竟是什麼型別
3.new indexsearcher(索引目錄).search(query);返回hits
4.用hits.doc(n);可以遍歷出document
5.用document可得到field的具體資訊了。
其實1 ,2兩步就是為了弄出個query 例項,究竟是什麼型別的看分析器了。
拿以前的例子來說吧
queryparser queryparser = new queryparser("name",new standardanalyzer());
query query = queryparser.parse("程式設計師"); //這裡返回的就是org.apache.lucene.search.phrasequery
indexsearcher indexsearcher =new indexsearcher("c:\\indexdisk");
hits hits = indexsearcher.search(query);
不管是什麼型別,無非返回的就是query的子類,我們完全可以不用這兩步直接new個query的子類的例項就ok了,
不過一般還是用這兩步因為它返回的是phrasequery這個是非常強大的query子類,它可以進行多字搜尋。用queryparser可以
設定各個關鍵字之間的關係這個是最常用的了。
indexsearcher:
其實indexsearcher它內部自帶了乙個indexreader用來讀取索引的,indexsearcher有個close()方法,這個方法不是用
來關閉indexsearcher的是用來關閉自帶的indexreader。
queryparser呢可以用parser.setoperator()來設定各個關鍵字之間的關係,它可以自動通過空格從字串裡面將關鍵字分離出來。
注意:用queryparser搜尋的時候分析器一定的和建立索引時候用的分析器是一樣的。
query:
可以看乙個lucene2.0的幫助文件有很多的子類:
booleanquery, constantscorequery, constantscorerangequery, disjunctionmaxquery, filteredquery,
matchalldocsquery, multiphrasequery, multitermquery, phrasequery, prefixquery, rangequery, spanquery, termquery
各自有用法看一下文件就能知道它們的用法了
Lucene 2 0學習文件( )
接 indexwriter file path,analyzer a,boolean create indexwriter string path,analyzer a,boolean create 可見構造它需要乙個索引檔案目錄,乙個分析器 一般用標準的這個 最後乙個引數是標識是否清空索引目錄 它...
lucene2 0學習文件二
下面講一下索引的建立 其實從上面的例子就可以看出建立索引就用到document,indexwriter,field。最簡單的步驟就是 首先分別new 乙個document,indexwriter,field,然後用doument.add 方法加入field.其次用indexwrtier.adddoc...
lucene2 0學習文件三
先看一下它的建構函式 indexwriter directory d,analyzer a,boolean create indexwriter file path,analyzer a,boolean create indexwriter string path,analyzer a,boolea...