lucene 關鍵字高亮

2021-04-29 02:01:47 字數 1935 閱讀 7176

indexwriter writer = new indexwriter(indexpath,analyzer,true);

document doca = new document();

string filetexta = "因為火燒雲總是燃燒著消失在太陽衝下地平線的時刻,然後便是寧靜的自然的天籟,沒有誰會在這樣的時光的鏡片裡傷感自語,因為燦爛給人以安靜的舒適感。";

field fielda = new field("contents", filetexta, field.store.yes,field.index.tokenized);

doca.add(fielda);

document docb = new document();

string filetextb = "因為帶有以傷痕為代價的美麗風景總是讓人不由地惴惴不安,緊接著襲面而來的抑或是病痛抑或是災難,沒有誰會能夠安逸著恬然,因為模糊讓人撕心裂肺地想吶喊。";

field fieldb = new field("contents", filetextb, field.store.yes,field.index.tokenized);

docb.add(fieldb);

document docc = new document();

string filetextc = "我喜歡上了乙個人孤獨地行遊,在夢與海洋的交接地帶熾烈燃燒著。"+

"因為,一條孤獨的魚喜歡上了火焰的顏色,真是荒唐地不合邏輯。";

field fieldc = new field("contents", filetextc, field.store.yes,field.index.tokenized);

docc.add(fieldc);

writer.adddocument(doca);

writer.adddocument(docb);

writer.adddocument(docc);

writer.optimize();

writer.close();

}public void search(string fieldname,string keyword) throws corruptindexexception, ioexception, parseexception

}searcher.close();

}public static void main(string args) catch (corruptindexexception e) catch (ioexception e) catch (parseexception e) }}

程式說明:

1、 createindex()方法:使用thesaurusanalyzer分析器為指定的文字建立索引。每個document中都有乙個name為 contents的field。在實際應用中,可以再構造一乙個name為path的field,指定檢索到的檔案的路徑(本地路徑或者網路上的鏈結地 址)

2、根據已經建好的索引庫進行檢索。這首先需要解析使用者輸入的檢索關鍵字,使用queryparser,必須與後台使用的分析器相同,否則不能保證解析得到的查詢(由詞條構造)query檢索到合理的結果集。

3、 根據解析出來的query進行檢索,檢索結果集儲存在hits中。遍歷,提取每個滿足條件的document的內容,程式中直接把它的內容當作摘要內容, 實現高亮顯示。在實際應用中,應該對應著乙個提取摘要(或者檢索資料庫得到檢索關鍵字對應的結果集檔案的摘要內容)的過程。有了摘要以後,就可以為摘要內 容增加高亮格式。

4、如果提取結果集檔案的前n個字串作為摘要,只需要在 highlighter.settextfragmenter(new ******fragmenter(text.length())); 中設定顯示摘要的字數,這裡顯示全部的文字作為摘要。

執行程式,結果如下所示:

詞庫尚未被初始化,開始初始化詞庫.

初始化詞庫結束。用時:3906毫秒;

共新增195574個詞語。

lucene查詢後關鍵字高亮顯示

query為查詢條件組合 htmlformatter htmlformatter new htmlformatter highlighter highlighter new highlighter htmlformatter,new queryscorer query highlighter.set...

關鍵字高亮變色

在搜尋介面需要關鍵字與搜尋出來的文字高亮顯示並且不區分字母大小寫 關鍵字高亮變色 param color 變化的色值 param text 文字 param keyword 文字中的關鍵字 return 結果spannablestring public static spannablestring ...

qml listview關鍵字高亮

研究了一天多,最終能實現的只有以下這種方案。view通過listmodel載入資料,但是 資料必須是經過整理的。才能實現關鍵字高亮。首先要把資料擷取成一段一段的,再根據比較函式,確定是否高亮。最近研究qml頭髮都白了。1 import qtquick 2.9 2 import qtquick.win...