当前位置: 首页 > 软件库 > 程序开发 > 搜索引擎 >

LucenePlus

基于 Lucene 的全文搜索框架
授权协议 Apache
开发语言 Java
所属分类 程序开发、 搜索引擎
软件类型 开源软件
地区 国产
投 递 者 王炜
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

lucenex 原LucenePlus

基于JDK 1.8 & lucene 7.x 的搜索框架、在不影响原本性能的同时、提升80%的开发效率、降低70%的开发难度!!!

更新日志

v1.0

*去除第三方分词依赖&无用的Jar *使用cglib 动态代理创建 Service *新增拦截器 *添加更新 默认异步

特点

原声Lucene 用法

注解式声明字段

多库自动切换

自动管理资源创建于释放

自动高性能近实时索引

可持续扩展的Service 接口设计

内置常用的 增删改查

可直接添加Java对象与Map集合 无需手动创建 Document

支持操作回退

可自定义分词器

默认异步提交和更新

用法

1、继承 LuceneXConfig

public class DemoConfig extends LuceneXConfig{
	@Override
	public void configConstant(Constants me) {
	}
	@Override
	public void configLuceneX(BaseConfig me) {
		// 存储目录 、名称、高亮、分词器、存储类
		me.add("d:/", "test",  false, new PerFieldAnalyzerWrapper(new StandardAnalyzer()), Empty.class);
	}
}

2、获取Service

//默认使用第一个存储库(如果您只有一个库或使用第一个库的话)
BasisService basisService = LdService.newInstance(BasisService.class);
//自定义使用库
BasisService basisService = LdService.newInstance(BasisService.class,"test");

3、内置基础方法 满足一般业务

public List TermQuery(String field,String value,int num)
public long IntDelete(String field,int value)
public void addIndex(List list)
public List searchList(Query query, int n)
public  Page searchList(Query query,Page page)
public List searchTotal()
public long addDocuments(Iterable> docs)
public long addDocument(Iterable doc)
public int count(Query query)
public TopDocs search(Query query, int n)
public TopFieldDocs search(Query query, int n, Sort sort)
public long deleteAll()
public long deleteDocuments
public long deleteDocuments(Term... terms)
public void deleteUnusedFiles()
public long updateIndex(List list,Term term)
public List toDocument(List list)
public void goBack()

4、如何测试

//手动启动
LuceneX.start(DemoConfig.class);

5、如何实现自己的Service

5.1、继承BasisService

5.2、可以使用父类已有的基础方法也可以使用 SourceConfig config 变量获取以下字段

private String indexPath;//存储地址
private boolean highlight;//是否高亮
private IndexWriter writer;//写入对象
private IndexSearcher searcher;//查询对象
private PerFieldAnalyzerWrapper analyzer;//分词器
private Class defaultClass;//存储对象Class
private Highlighter highlighter;//高亮标签

5.3、使用实例Demo

default public int count(Query query) throws IOException {
	return config.getSearcher().count(query);
}
  • LucenePlus 1.2 发布了,这是一款基于 Lucene 的全文搜索框架。 更新如下: 优化代码结构、更加易用简洁 增加字段支持 float,binary,double,text 自定义 query 查询 排序重新定义 增加 LucenePlus 数据源、更清晰明了、随意切换 文章转载自 开源中国社区 [http://www.oschina.net]

 相关资料
  • 这是我想解决的问题: 我有多个Lucene索引,每个索引包含相同数据结构的子集(它们具有相同的字段,但是字段可能存在于文档中,也可能不存在于某个索引中) 索引之间共享一个全局标识符。也就是说,如果有4个索引,最多可能有4个文档共享一个密钥。 我有一个单一的Lucene查询 我使用一起查询所有索引,并且我能够使用找出命中来自哪个子索引。到目前为止还不错,但问题是: 为了执行一个(相当复杂的)合并逻辑

  • 供参考:我的代码和这个so帖子非常相似。 谢谢

  • 问题内容: 我正在建立Django网站,并且正在寻找搜索引擎。 一些候选人: Lucene / Lucene与指南针/ Solr 狮身人面像 PostgreSQL内置全文本搜索 MySQl内置全文本搜索 选择标准: 结果相关性和排名 搜索和索引速度 易于使用,易于与Django集成 资源需求-网站将托管在VPS上,因此理想情况下,搜索引擎不需要大量的RAM和CPU 可扩展性 其他功能,例如“您的意

  • 我想做一个字段折叠热门点击聚合,正如这里所记录的: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html#_field_collapse_example 特别是,这一部分是一个问题: 因为生产环境配置有: 这意味着我不

  • 我对弹性搜索完全陌生。我在试着从弹性搜索中取记录。 我查了文件,但找不到任何解决办法。如果你在这里给我一些提示或一些网站,我可以解决我的问题,我将非常感谢。

  • 回顾 在前面的章节(分页),我们已经加强了数据库查询,因此能够在页面上获取各种查询。 今天,我们会继续探讨数据库的话题,只是领域不同。所有存储内容的应用程序必须提供搜索能力。 许多其它类型的网站可能使用了谷歌、必应等索引所有的内容并且提供查询结果。这个对于大多数静态页面的网站,像论坛,是很好用。我们应用程序 microblog 的基本单元是用户短小的 blog,不是整个页面。我们希望搜索结果是动态

  • bugu-mongo 2.x版本集成了Lucene的功能。当往MongoDB中新增一个Document时,能自动为该Document建立Lucene索引。相应的,当MongoDB中的Document被修改、删除时,对应的Lucene索引也会修改、删除。 另外,bugu-mongo还提供了对Lucene搜索的支持。根据Lucene索引进行搜索的时候,搜索结果能自动转换成对应的Entity对象。 在L

  • 我的任务是使用lucene在我们的产品表中搜索。我已经创建了一个索引,正在使用带有多个字段的QueryParser进行搜索,但结果不是我所需要的。我有一个存储为LM10的产品,但如果搜索词是LM 10,我希望能够找到它,但如果搜索词是Fred LM10或Fred LM 10,它也必须能够匹配。你知道我如何在Lucene做到这一点吗。 提前谢谢