当前位置:网站首页>Redis实现高性能的全文搜索引擎---RediSearch
Redis实现高性能的全文搜索引擎---RediSearch
2022-07-05 08:40:00 【抹香鲸之海】
RediSearch是一个Redis模块,为Redis提供查询、二次索引和全文搜索,他的性能甚至比es还要高。
安装:
docker pull redislabs/redismod:preview
启动容器:
注意端口号不要和redis冲突了:
docker run -p 6399:6379 --name redismod -v /mydata/redismod/data:/data -d redislabs/redismod:preview

使用springboot 集成一下:
pom
<dependency>
<groupId>com.redislabs</groupId>
<artifactId>jredisearch</artifactId>
<version>1.8.1</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.10</version>
</dependency>
<dependency>
<groupId>com.hankcs</groupId>
<artifactId>hanlp</artifactId>
<version>portable-1.7.8</version>
</dependency>
代码
package com.example.demo.Utils.RedisearchUtills;
import io.redisearch.*;
import io.redisearch.client.AddOptions;
import io.redisearch.client.Client;
import java.util.HashMap;
import java.util.Map;
public class redisearchMain {
public static void main(String[] args) {
Client client = new Client("student", "120.48.54.67", 6399);
// 定义一个索引模式
Schema schema = new Schema().addTextField("title", 5.0).addTextField("body", 1.0).addNumericField("star");
// 首次run 可以先注释掉
client.dropIndex();//先清除索引
// 创建索引
client.createIndex(schema, Client.IndexOptions.Default());
// 向索引中添加文档
Map<String, Object> fields1 = createDocument("任何视频", "新文档中不存在的内容将被保留。两者中存在的字段都会被覆盖", 1000);
Map<String, Object> fields2 = createDocument("任何通信", "新文档中不存在的内容将丢失", 500);
// client.addDocument("doc1", fields1);
// client.addDocument("doc2", fields2);
Document doc1 = new Document("doc1", fields1, 1.0, null);
Document doc2 = new Document("doc2", fields2, 1.0, null);
AddOptions options = new AddOptions().setNosave(false);
options.setLanguage("chinese");
client.addDocument(doc1, options);
client.addDocument(doc2, options);
Query query = new Query("内容").addFilter(new Query.NumericFilter("star", 0, 1500)).setWithScores().limit(0, 10);
SearchResult result = client.search(query);
result.docs.stream().forEach(docs->
System.out.println("====="+docs)
);
}
private static Map<String, Object> createDocument(String title, String body, Integer price){
Map<String, Object> fields = new HashMap<String, Object>();
fields.put("title", title);
fields.put("body", body);
fields.put("star", price);
return fields;
}
}

边栏推荐
- 如何写Cover Letter?
- 图解八道经典指针笔试题
- Typescript hands-on tutorial, easy to understand
- Example 005: three numbers sorting input three integers x, y, Z, please output these three numbers from small to large.
- go依赖注入--google开源库wire
- 猜谜语啦(2)
- 2020-05-21
- 实例001:数字组合 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
- C语言标准函数scanf不安全的原因
- Esp8266 interrupt configuration
猜你喜欢

Yolov4 target detection backbone

Example 008: 99 multiplication table

猜谜语啦(142)
![[noi simulation] juice tree (tree DP)](/img/19/bc71e8dc3958e4cb87b31423a74617.png)
[noi simulation] juice tree (tree DP)

实例004:这天第几天 输入某年某月某日,判断这一天是这一年的第几天?

Guess riddles (3)

猜谜语啦(5)

Agile project management of project management

Matlab tips (28) fuzzy comprehensive evaluation

STM32 single chip microcomputer - bit band operation
随机推荐
One question per day - replace spaces
UE pixel stream, come to a "diet pill"!
Guess riddles (2)
Sword finger offer 05 Replace spaces
STM32 --- GPIO configuration & GPIO related library functions
Some pitfalls of win10 network sharing
【三层架构及JDBC总结】
STM32 single chip microcomputer -- debug in keil5 cannot enter the main function
U8g2 drawing
Five design details of linear regulator
Lori remote control commissioning record
Stm32--- systick timer
Is the security account given by Yixue school safe? Where can I open an account
Bluebridge cup internet of things basic graphic tutorial - GPIO output control LD5 on and off
Guess riddles (7)
Several problems to be considered and solved in the design of multi tenant architecture
MATLAB skills (28) Fuzzy Comprehensive Evaluation
猜谜语啦(10)
MATLAB小技巧(28)模糊綜合評價
Typescript hands-on tutorial, easy to understand