全文检索Lucene Solr 811(1)

全文检索Lucene Solr 811

solr

Solr是一个高性能,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

lucene

Lucene是apache
jakarta项目的一个子项目,是一个开放源代码的全文检索引擎开发工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。

倒排索引

  • 我们一般查看,先找到文档,再在文档中找出包含的词;

  • 倒排索引则是这个过程反过来,用词,来找出它出现的文档.

Lucene API测试

创建maven项目
在这里插入图片描述

引入依赖

<dependencies>
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-core</artifactId>
			<version>8.1.1</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
		</dependency>
        <!-- 分词器 -->
		<dependency>
			<groupId>org.apache.lucene</groupId>
			<artifactId>lucene-analyzers-smartcn</artifactId>
			<version>8.1.1</version>
		</dependency>

	</dependencies>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.8.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
		</plugins>
	</build>

创建测试,编写代码

public class Test1 {

	String[] a = {
			"3, 华为 - 华为电脑, 爆款",
			"4, 华为手机, 旗舰",
			"5, 联想 - Thinkpad, 商务本",
			"6, 联想手机, 自拍神器"
	};
	@Test
	public void test1() throws IOException {
		//存储索引文件的路径
		File path = new File("E:/lucene/");
		FSDirectory d = FSDirectory.open(path.toPath());
		//lucene提供的中文分词器
		SmartChineseAnalyzer analyzer = new SmartChineseAnalyzer();
		//通过配置对象来指定分词器
		IndexWriterConfig cfg = new IndexWriterConfig(analyzer);
		//索引输出工具
		IndexWriter writer = new IndexWriter(d, cfg);
		//输出索引
		for (String s : a) {
			//分割
			String[] arr = s.split(",");
			
			//把文档数据,封装成document对象
			Document doc =new Document();
			doc.add(new LongPoint("id", Long.parseLong(arr[0])));
			//文档摘要
			doc.add(new StoredField("id", Long.parseLong(arr[0])));
			//Store.YES作为摘要信息存储
			doc.add(new TextField("title", arr[1], Store.YES));
			doc.add(new TextField("sellPoint", arr[2], Store.YES));
			
			writer.addDocument(doc);
		}
		writer.flush();
		writer.close();
	}
	}

Junit测试,回来本地生成如下目录

在这里插入图片描述
Luke
Luke作为Lucene工具包中的一个工具,可以通过界面来进行索引文件的查询、修改;
链接如下,提取码私信博主
lucene-8.1.1

运行lucene 8.1.1中的luke应用程序
在这里插入图片描述
选定目录
在这里插入图片描述

查看文档
在这里插入图片描述
指定分词器,进行测试
在这里插入图片描述

查询

在这里插入图片描述

id查询
在这里插入图片描述

索引查询
添加test方法

@Test
	public void test2() throws Exception {
		//指定保存索引数据的文件夹
		FSDirectory d = FSDirectory.open(new File("E:/lucene/").toPath());
		//索引读取工具
		DirectoryReader reader = DirectoryReader.open(d);
		//查询器
		IndexSearcher searcher = new IndexSearcher(reader);
		//查询对象封装查询信息
		TermQuery q = new TermQuery(new Term("title","华为"));
		
		//执行查询,获得排名的文档
		TopDocs result = searcher.search(q, 20);
		for (ScoreDoc sd : result.scoreDocs) {
			int id =sd.doc;
			float score =sd.score;
			System.out.println(id+" - "+score);
			Document doc = searcher.doc(id);
			System.out.println(doc.get("id"));
			System.out.println(doc.get("title"));
			System.out.println(doc.get("sellPoint"));
			System.out.println("--------------");
		}
		
	}

最后
更多参考精彩博文请看这里:RR-Shmily
喜欢博主的小伙伴可以加个关注、点个赞,欢迎评论哦,持续更新嘿嘿!***

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Solr是一个现成的全文检索引擎系统,可以通过将其放入Tomcat下来独立运行。通过使用SolrJ来调用Solr服务,企业可以实现对索引和文档的增删改查服务。将数据库中的数据导入Solr索引库,并且可以通过Solr后台管理界面对索引进行CRUD、高亮、过滤、排序和分页等操作。使用Solrj可以实现索引的添加、更新和删除操作。SolrLucene的区别在于,Lucene是一个全文检索引擎工具包,而Solr是基于Lucene开发的一个全文检索引擎系统,可以独立运行并通过HTTP形式提供全文检索服务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [全文检索技术—Solr](https://blog.csdn.net/chuan129/article/details/80099292)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Lucene全文检索框架+Solr+ElasticSearch搜索引擎(Java高级必备.ES)](https://download.csdn.net/download/weixin_27064205/19677591)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值