当前位置:网站首页>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;
}
}
边栏推荐
- 2022.7.4-----leetcode. one thousand and two hundred
- Guess riddles (3)
- C语言标准函数scanf不安全的原因
- Daily question - input a date and output the day of the year
- 猜谜语啦(11)
- [nas1] (2021cvpr) attentivenas: improving neural architecture search via attentive sampling (unfinished)
- Guess riddles (4)
- How to manage the performance of R & D team?
- Various types of questions judged by prime numbers within 100 (C language)
- 如何写Cover Letter?
猜你喜欢
Digital analog 1: linear programming
猜谜语啦(6)
Guess riddles (2)
Low code platform | apaas platform construction analysis
Matlab tips (28) fuzzy comprehensive evaluation
Bluebridge cup internet of things basic graphic tutorial - GPIO input key control LD5 on and off
[noi simulation] juice tree (tree DP)
Lori remote control LEGO motor
[matlab] matlab reads and writes Excel
Guess riddles (5)
随机推荐
An enterprise information integration system
Guess riddles (6)
Wheel 1:qcustomplot initialization template
Infected Tree(树形dp)
Apaas platform of TOP10 abroad
UE pixel stream, come to a "diet pill"!
猜谜语啦(9)
319. Bulb switch
猜谜语啦(7)
STM32 --- GPIO configuration & GPIO related library functions
99 multiplication table (C language)
Example 002: the bonus paid by the "individual income tax calculation" enterprise is based on the profit commission. When the profit (I) is less than or equal to 100000 yuan, the bonus can be increase
696. 计数二进制子串
剑指 Offer 09. 用两个栈实现队列
287. 寻找重复数-快慢指针
Sword finger offer 09 Implementing queues with two stacks
Example 009: pause output for one second
[NAS1](2021CVPR)AttentiveNAS: Improving Neural Architecture Search via Attentive Sampling (未完)
696. Count binary substring
STM32 single chip microcomputer - bit band operation