CJCMS系列 說說專案中如何使用搜尋引擎

2022-02-05 12:27:18 字數 2399 閱讀 4346

開源全文搜尋引擎,比較火的當屬lucene.net。

lucene.net是

lucene

的.net移植版本,是乙個開源的全文檢索引擎開發包,即它不是乙個完整的全文檢索引擎,而是乙個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎。開發人員可以基於lucene.net實現全文檢索的功能。

比較麻煩的是,lucene.net關於中文的分詞,我好想沒有找到,所以我從網上發現了盤古分詞,盤古分詞據說在中文分詞上面做的很好,所以我也就將他引入到專案中來了。

首先是索引元,索引元怎麼實現呢?為了實現通用的索引元資料,我使用了如下的抽象。

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

lucene.net.documents;67

namespace

cjcms.framework.lucene812

13 listindexitemsfieldlist

1415

void

initindexitem();16}

17 }

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

lucene.net.documents;67

namespace

cjcms.framework.lucene812

13void

add(iindexitem item);

1415

void

update(iindexitem item);

1617

void

delete(iindexitem item);

1819

void delete(string

id);

2021 listfetch(string keywords, int pagenum, int

count);

2223

}24 }

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

lucene.net.search;

6using

lucene.net.index;

7using

lucene.net.analysis;

8using

lucene.net.analysis.pangu;

9using

lucene.net.documents;

10using

lucene.net.queryparsers;

1112

namespace

cjcms.framework.lucene

1321

set 22}

2324

public defaultindexmanager(string

indexpath)

2528

29public

void

add(iindexitem item)

3037

indexwriter.adddocument(doc);38}

3940

public

void

update(iindexitem item)

4145

46public

void

delete(iindexitem item)

4753

54public

void delete(string

id)55

61///

62///

分頁搜尋

63///

64///

65///

初始為1

66///

67///

68public listfetch(string keywords, int pagenum, int

count)

6979

return

list;80}

81}82 }

CJCMS系列 說說專案中的外掛程式思想(2)

今天是星期天,那我就趕緊多多的寫一些吧。上一次的一篇文章,不知道大家有沒有看懂,要是沒有看懂,請回去慢慢的嚼透吧,我覺得認真的看,有一定的基礎應該能夠看懂。上面一講我留下乙個疑問,那就是一句編譯後指令,有一些mvc基礎的人,應該能夠看出端倪,要是你沒有看懂,那就認真的聽我道來吧。1 xcopy s ...

專案中如何優化細節

一.記憶體優化 1.減少記憶體洩露。如timer,delegate,block,corefoundation物件 c物件 image 2.降低記憶體使用峰值。如使用懶載入 二.效能優化 卡頓產生的原因 cpu計算時間以及gpu渲染時間較長,造成vsync 垂直同步的訊號 重新整理銜接不上 解決卡頓主...

如何減少專案中if else巢狀

一般建議if else巢狀不超過三層 原始 bean類 private class shareitem public inte ce sharelistener 定義分享介面 public void share shareitem item,sharelistener listener else e...