lucene2 0學習文件六

2021-08-30 07:13:56 字數 1561 閱讀 8987

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...