导航:首页 > 源码编译 > 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项目源码相关的资料

热点内容
java字符处理函数 浏览:274
指纹用于应用加密什么意思 浏览:998
怎么取消苹果手机的appid密码 浏览:997
门禁系统录制卡怎么加密 浏览:753
ssm看源码哪本书好 浏览:933
linux查看网卡的命令 浏览:497
basic语言算法 浏览:13
怎么快捷删除无用文件夹 浏览:475
你家离学校源码用英语回答 浏览:504
电脑如何用服务器地址 浏览:652
php转化为二进制 浏览:738
程序员到国企感受 浏览:863
js二分搜索算法 浏览:658
文件夹的定义与原意 浏览:202
phpredis任务队列 浏览:463
文件夹的颜色代表什么 浏览:895
单片机模拟通信 浏览:931
pandas在哪里编译 浏览:918
安卓机怎么调清晰度 浏览:346
开始菜单文件夹英语 浏览:887