導航:首頁 > 源碼編譯 > luceneweb項目源碼

luceneweb項目源碼

發布時間:2022-06-16 06:28:13

① 有什麼方法可以在Eclipse里看到lucene包的源代碼謝了

首先你要有這個包的源代碼,然後就是設置Eclipse,告訴eclipse源代碼在哪

② lucene之Highlighter報錯cannot be resolved to a type

org.apache.lucene.search.highlight.Highlighter cannot be resolved to a type
指的是你沒有引入org.apache.lucene.search.highlight.Highlighter這個類型。你已經聲明了,應該是沒有找到Highlighter這個包。建議別用星號,直接引這個文件。
這個包不包括在lucene核心包lucene-core.jar里,你要下載全包,然後在contrib\highlighter找到這個包加上去,既然你把這些代碼放到web上去,你要把這個包放到tomcat下這個項目當中,別把它放到eclipse下classpath,web項目是要部署到tomcat上去,如果不放到tomcat上當然找不到這個包。最好寫代碼把邏輯代碼放到.java文件上,只要把結果放到web頁面就好了,免得調試麻煩。

③ 如何獲取lucene的java源代碼

1.啟動eclipse,使用svn插件從把trunk代碼checkout出來。
2.如果你沒有安裝ant,那麼先安裝ant(ant.apache.org)。
3.進入cmd,切入到源代碼目錄(在lucene和solr目錄的上一級)。
4.然後使用ant eclipse(如果你沒有安裝ivy的話,ant會提示你安裝,按照提示安裝)
5.在eclipse中創建java project,勾掉Use default location,選擇luence,然後下一步直到完成導入lucene,同樣的導入solr。
6.因為solr引用lucene,所以在solr的buildpath中加入對lucene項目引用。

④ 迅龍中文開源Web搜索引擎 的源碼怎麼編譯不了呀

原來我也下過,也沒成功。
後來找到一個lucene.net還不錯,不過沒研究明白。。。

⑤ lucene4.4 源碼

資源鏈接: http://apache.dataguru.cn/lucene/java/4.4.0/
lucene-4.4.0-src.tgz 就是源碼包,親自下載過!

⑥ 急求.NET寫的Lucene.Net+盤古分詞器的站內搜索源碼!

解決方案例子:
Step1: IndexWriter indexwriter初始化IndexWriter//創建或寫索引庫文件的對象
Step2:Document doc新建一個Document對象
Step3:TextField field=new TextField(FN,Value,Store.Yes)//FN-索引欄位名,Value-資料庫中的值,第三個參數表示是否存儲,如果資料庫中有多個欄位,那就創建多個TextField對象,當然可以根據需求創建StringField對象、DoubleField對象等等
Step4:doc.add(field1);doc.Add(field2)...//將欄位添加到doc對象中,索引庫中都是按doc來存的,doc可以類比與資料庫中的行
Step5:indexwriter.addDocument(doc)//方法大概是這樣
Step6:indexwriter.commit();//提交
Step7:indexwriter.close();//關閉

⑦ 如何在eclipse中導入lucene源碼

1.啟動eclipse,使用svn插件從https //svn apache org/repos/asf/lucene把trunk代碼checkout出來。
2.如果你沒有安裝ant,那麼先安裝ant(ant.apache.org)。
3.進入cmd,切入到源代碼目錄(在lucene和solr目錄的上一級)。
4.然後使用ant eclipse(如果你沒有安裝ivy的話,ant會提示你安裝,按照提示安裝)
5.在eclipse中創建java project,勾掉Use default location,選擇luence,然後下一步直到完成導入lucene,同樣的導入solr。
6.因為solr引用lucene,所以在solr的buildpath中加入對lucene項目引用。

⑧ 如何高效地閱讀lucene源碼

1.IndexReader

IndexReader是一個抽象類,提供訪問索引的介面。對一個索引的查詢就是通過該介面。

有兩種不同的IndexReader。

a.AtomicReader:不包含子reader 是一個原子類型的reader 支持存儲域,文檔值,詞和倒排表

b.CompositeReader:

一個基於硬碟的IndexReader實例,通常是通過調用DirectoryReader.open()方法來構造的。

對於更有效地方法,通常通過一個唯一的ID來關聯一個document。IndexReader是線程安全的。

2.AtomicReader

3.CompositeReader

4.IndexReaderContext

代表IndexReader層次關系的一個結構類。

5.DirectoryReader
CompositeReader的實現類,可以從一個directory中讀取索引信息。
通常調用靜態方法open(final Directory directory)

6.FindSegmentsFile
同當前段文件打交道的工具類。

三:IndexReader載入過程

1.FSDirectory調用open方法,打開索引所在的目錄

public static FSDirectory open(File path) throws IOException {
return open(path, null);
}

2.FindSegmentsFile調用run函數
首先列出所有的segment_N,並取出其中的最大的N,設為genA

files = directory.listAll();

if (files != null) {
genA = getLastCommitGeneration(files);
}

另一方面,打開segment.gen 文件,從中讀出N,設為genB
genInput = directory.openInput(IndexFileNames.SEGMENTS_GEN, IOContext.READONCE);

在 genA 和genB 中去較大者,為gen,並用此gen 構造要打開的segments_N 的文件名

gen = Math.max(genA, genB);

segmentFileName = IndexFileNames.fileNameFromGeneration(IndexFileNames.SEGMENTS,
"",
gen);

3.StandardDirectoryReader調用SegmentInfos.FindSegmentsFile的匿名類的doBody()方法,讀取段的相關
信息。
SegmentInfos sis = new SegmentInfos();
sis.read(directory, segmentFileName);

根據生成的SegmentInfos 打開各個段,並生成ReadOnly DirectoryReader

readers[i] = new SegmentReader(sis.info(i), termInfosIndexDivisor, IOContext.READ);

4.Lucene42FieldInfosReader調用read方法,讀取段相關.fnm文件

public FieldInfos read(Directory directory, String segmentName, IOContext iocontext) throws IOException {
final String fileName = IndexFileNames.segmentFileName(segmentName, "", Lucene42FieldInfosFormat.EXTENSION);
IndexInput input = directory.openInput(fileName, iocontext);

boolean success = false;
try {
CodecUtil.checkHeader(input, Lucene42FieldInfosFormat.CODEC_NAME,
Lucene42FieldInfosFormat.FORMAT_START,
Lucene42FieldInfosFormat.FORMAT_CURRENT);

final int size = input.readVInt(); //read in the size
FieldInfo infos[] = new FieldInfo[size];

for (int i = 0; i < size; i++) {
String name = input.readString();
final int fieldNumber = input.readVInt();
byte bits = input.readByte();
boolean isIndexed = (bits & Lucene42FieldInfosFormat.IS_INDEXED) != 0;
boolean storeTermVector = (bits & Lucene42FieldInfosFormat.STORE_TERMVECTOR) != 0;
boolean mitNorms = (bits & Lucene42FieldInfosFormat.OMIT_NORMS) != 0;
boolean storePayloads = (bits & Lucene42FieldInfosFormat.STORE_PAYLOADS) != 0;
final IndexOptions indexOptions;
if (!isIndexed) {
indexOptions = null;
} else if ((bits & Lucene42FieldInfosFormat.OMIT_TERM_FREQ_AND_POSITIONS) != 0) {
indexOptions = IndexOptions.DOCS_ONLY;
} else if ((bits & Lucene42FieldInfosFormat.OMIT_POSITIONS) != 0) {
indexOptions = IndexOptions.DOCS_AND_FREQS;
} else if ((bits & Lucene42FieldInfosFormat.STORE_OFFSETS_IN_POSTINGS) != 0) {
indexOptions = IndexOptions.DOCS_AND_FREQS_AND_POSITIONS_AND_OFFSETS;
} else {
indexOptions = IndexOptions.DOCS_AND_FREQS_AND_POSITIONS;
}

// DV Types are packed in one byte
byte val = input.readByte();
final DocValuesType docValuesType = getDocValuesType(input, (byte) (val & 0x0F));
final DocValuesType normsType = getDocValuesType(input, (byte) ((val >>> 4) & 0x0F));
final Map attributes = input.readStringStringMap();
infos[i] = new FieldInfo(name, isIndexed, fieldNumber, storeTermVector,
omitNorms, storePayloads, indexOptions, docValuesType, normsType, Collections.unmodifiableMap(attributes));
}

if (input.getFilePointer() != input.length()) {
throw new CorruptIndexException("did not read all bytes from file \"" + fileName + "\": read " + input.getFilePointer() + " vs size " + input.length() + " (resource: " + input + ")");
}
FieldInfos fieldInfos = new FieldInfos(infos);
success = true;
return fieldInfos;
} finally {
if (success) {
input.close();
} else {
IOUtils.closeWhileHandlingException(input);
}
}
}

⑨ lucene在java web中用的多嗎

有全文檢索需求的,就倆路
1、收費的,如filenet的Content Search Services(或k2)等
2、免費的,lucene或者基於lucene的其他庫
關鍵是,有全文檢索要求的需求只佔全部項目的一個小比例。所以你要是問全部項目都算上,多不多,那不多;你要是問,有需要的時候用的多不多,那很多。

⑩ 畢業設計:求搜索引擎的原代碼

開源搜索引擎工具包

1.Lucene

Lucene是目前最為流行的開放源代碼全文搜索引擎工具包,隸屬於Apache基金會,由資深全文索引/檢索專家 Doug Cutting所發起,並以其妻子的中間名作為項目的名稱。Lucene不是一個具有完整特徵的搜索應用程序,而是一個專注於文本索引和搜索的工具包,能夠為應用程序添加索引與搜索能力。基於Lucene在索引及搜索方面的優秀表現,雖然由Java編寫的Lucene具有天生的跨平台性,但仍被改編為許多其他語言的版本:Perl、Python、C++、.Net等。

同其他開源項目一樣,Lucene具有非常好的架構,能夠方便地在其基礎上進行研究與開發,添加新功能或者開發新系統。 Lucene本身只支持文本文件及少量語種的索引,並且不具備爬蟲功能,而這正是Lucene的魅力所在,通過Lucene提供的豐富介面,我們可以根據自身的需要在其上添加具體語言的分詞器,針對具體文檔的文本解析器等,而這些具體的功能實現都可以藉助於一些已有的相關開源軟體項目、甚至是商業軟體來完成,這也保證了Lucene在索引及搜索方面的專注性。目前,通過在Lucene的基礎上加入爬行器、文本解析器等也形成了一些新的開源項目,如 LIUS、Nutch等。並且Lucene的索引數據結構已經成了一種事實上的標准,為許多搜索引擎所採用。

2.LIUS

LIUS即Lucene Index Update and Search的縮寫,它是以Lucene為基礎發展起來的一種文本索引框架,和Lucene一樣,同樣可以看作搜索引擎開發工具包。它在Lucene的基礎上作了一些相應的研究及添加了一些新的功能。LIUS藉助於許多開源軟體,可以直接對各種不同格式/類型的文檔進行文本解析與索引,這些文檔格式包括MS Word、MS Excel、 MS PowerPoing、RTF、PDF、XML、HTML、TXT、Open Office及JavaBeans等,對Java Beans的支持對於進行資料庫索引非常有用,在用戶進行對象關系映射(如:Hibernate、JDO、TopLink、Torque等)的資料庫連接編程時會變得更加精確。LIUS還在Lucene的基礎上增加了索引更新功能,使針對索引的維護功能進一步完善。並且支持混和索引,可以把同一目錄下與某一條件相關的所有內容整合到一起,這種功能對於需要對多種不同格式的文檔同時進行索引時非常有用。

3.Egothor

Egothor是一款開源的高性能全文搜索引擎,適用於基於全文搜索功能的搜索應用,它具有與Luccene類似的核心演算法,這個項目已經存在了很多年,並且擁有一些積極的開發人員及用戶團體。項目發起者Leo Galambos是捷克布拉格查理大學數學與物理學院的一名高級助理教授,他在博士研究生期間發起了此項目。

更多的時候,我們把Egothor看作一個用於全文搜索引擎的Java庫,能夠為具體的應用程序添加全文搜索功能。它提供了擴展的Boolean模塊,使得它能被作為Boolean模塊或者Vector模塊使用,並且Egothor具有一些其他搜索引擎所不具有的特有功能:它採用新的動態演算法以有效提高索引更新的速度,並且支持平行的查詢方式,可有效提高查詢效率。在Egothor的發行版中,加入了爬行器、文本解析器等許多增強易用性的應用程序,融入了Golomb、Elias-Gamma等多種高效的壓縮方法,支持多種常用文檔格式的文本解析,如HTML、PDF、 PS、微軟Office文檔、XLS等,提供了GUI的索引界面及基於Applet或者Web的查詢方式。另外,Egothor還能被方便地配置成獨立的搜索引擎、元數據搜索器、點對點的HUB等多種且體的應用系統。

4.Xapian

Xapian是基於GPL發布的搜索引擎開發庫,它採用C++語言編寫,通過其提供綁定程序包可以使Perl、Python、PHP、Java、Tck、C#、Ruby等語言方便地使用它。

Xapian還是一個具有高適應性的工具集,使開發人員能夠方便地為他們的應用程序添加高級索引及搜索功能。它支持信息檢索的概率模型及豐富的布爾查詢操作。Xapian的發布包通常由兩部分組成:xapian-core及xapian-bindings,前者是核心主程序,後者是與其他語言進行綁定的程序包。

Xapian為程序開發者提供了豐富的API及文檔進行程序的編制,而且還提供了許多編程實例及一個基於Xapian的應用程序Omega,Omega由索引器及基於CGI的前端搜索組成,能夠為HTML、PHP、PDF、PostScript、 OpenOffice/StarOffice、RTF等多種格式的文檔編制索引,通過使用Perl DBI模塊甚至能為MySQL、 PostgreSQL、SQLite、Sybase、MS SQL、LDAP、ODBC等關系資料庫編制索引,並能以CSV或XML格式從前端導出搜索結果,程序開發者可以在此基礎上進行擴展。

5.Compass

Compass是在Lucene上實現的開源搜索引擎架構,相對比於Lucene而言,提供更加簡潔的搜索引擎API。增加了索引事務處理的支持,使其能夠更方便地與資料庫等事務處理應用進行整合。它更新時無需刪除原文檔,更加簡單更加高效。資源與搜索引擎之間採用映射機制,此種機制使得那些已經使用了Lucene或者不支持對象及XML的應用程序遷移到Compass上進行開發變得非常容易。

Compass還能與Hibernate、Spring等架構進行集成,因此如果想在Hibernate、Spring項目中加入搜索引擎功能,Compass是個極好的選擇。

開源Web搜索引擎系統

1.Nutch

Nutch是Lucene的作者Doug Cutting發起的另一個開源項目,它是構建於Lucene基礎上的完整的 Web搜索引擎系統,雖然誕生時間不長,但卻以其優良血統及簡潔方便的使用方式而廣收歡迎。我們可以使用Nutch搭建類似Google的完整的搜索引擎系統,進行區域網、互聯網的搜索。

2.YaCy

YaCy是一款基於P2P(peer-to-peer)的分布式開源Web搜索引擎系統,採用Java語言進行編寫,其核心是分布在數百台計算機上的被稱為YaCy-peer的計算機程序,基於P2P網路構成了YaCy網路,整個網路是一個分散的架構,在其中所有的YaCy -peers都處於對等的地位,沒有統一的中心伺服器,每個YaCy-peer都能獨立的進行互聯網的爬行抓取、分析及創建索引庫,通過P2P網路與其他 YaCy-peers進行共享,並且每個YaCy-peer又都是一個獨立的代理伺服器,能夠對本機用戶使用過的網頁進行索引,並且採取多機制來保護用戶的隱私,同時用戶也通過本機運行的Web伺服器進行查詢及返回查詢結果。

YaCy搜索引擎主要包括五個部分,除普通搜索引擎所具有的爬行器、索引器、反排序的索引庫外,它還包括了一個非常豐富的搜索與管理界面以及用於數據共享的P2P網路。

開源桌面搜索引擎系統

1.Regain

regain是一款與Web搜索引擎類似的桌面搜索引擎系統,其不同之處在於regain不是對Internet內容的搜索,而是針對自己的文檔或文件的搜索,使用regain可以輕松地在幾秒內完成大量數據(許多個G)的搜索。Regain採用了Lucene的搜索語法,因此支持多種查詢方式,支持多索引的搜索及基於文件類型的高級搜索,並且能實現URL重寫及文件到HTTP的橋接,並且對中文也提供了較好的支持。

Regain提供了兩種版本:桌面搜索及伺服器搜索。桌面搜索提供了對普通桌面計算機的文檔與區域網環境下的網頁的快速搜索。伺服器版本主要安裝在Web伺服器上,為網站及區域網環境下的文件伺服器進行搜索。

Regain使用Java編寫,因此可以實現跨平台安裝,能安裝於Windows、Linux、Mac OS及 Solaris上。伺服器版本需要JSPs環境及標簽庫(tag library),因此需要安裝一個Tomcat容器。而桌面版自帶了一個小型的Web 伺服器,安裝非常簡單。

2.Zilverline

Zilverline是一款以Lucene為基礎的桌面搜索引擎,採用了Spring框架,它主要用於個人本地磁碟及區域網內容的搜索,支持多種語言,並且具有自己的中文名字:銀錢查打引擎。Zilverline提供了豐富的文檔格式的索引支持,如微軟Office文檔、 RTF、Java、CHM等,甚至能夠為歸檔文件編制索引進行搜索,如zip、rar及其他歸檔文件,在索引過程中,Zilverline從zip、 rar、chm等歸檔文件中抽取文件來編制索引。Zilverline可以支持增量索引的方式,只對新文件編制索引,同時也支持定期自動索引,其索引庫能被存放於Zilverline能夠訪問到的地方,甚至是DVD中。同時,Zilverline還支持文件路徑到URL的映射,這樣可以使用戶遠程搜索本地文件。

Zilverline提供了個人及研究、商業應用兩種許可方式,其發布形式為一個簡單的war包,可以從其官方網站下載(http://www.zilverline.org/)。Zilverline的運行環境需要Java環境及Servlet容器,一般使用 Tomcat即可。在確保正確安裝JDK及Tomcat容器後只需將Zilverline的war包(zilverline-1.5.0.war)拷貝到 Tomcat的webapps目錄後重啟Tomcat容器即可開始使用Zilverline搜索引擎了。

閱讀全文

與luceneweb項目源碼相關的資料

熱點內容
知網程序員 瀏覽:702
怎麼把電子版投標報價加密 瀏覽:29
電腦安全編譯器 瀏覽:364
在伺服器里如何調創造 瀏覽:835
知雲登錄為什麼找不到伺服器 瀏覽:815
python切片位置 瀏覽:375
平板加密視頻怎麼播放 瀏覽:377
程序員上下班不帶電腦 瀏覽:835
androidrsa文件 瀏覽:64
linuxlvds 瀏覽:103
程序員選擇職場 瀏覽:345
累加C語言演算法 瀏覽:948
足浴店用什麼app招人 瀏覽:191
php調用thrift 瀏覽:191
java精度丟失 瀏覽:903
地梁承台相交處箍筋加密 瀏覽:95
程序員繪本 瀏覽:647
php線程安全版 瀏覽:407
lilolinux 瀏覽:111
proteus51編譯工具 瀏覽:309