当前位置:网站首页>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;
}
}
边栏推荐
- Numpy 小坑:维度 (n, 1) 和 维度 (n, ) 数组相加运算后维度变为 (n, n)
- 【三层架构】
- Example 008: 99 multiplication table
- Example 003: a complete square is an integer. It is a complete square after adding 100, and it is a complete square after adding 168. What is the number?
- Guess riddles (5)
- TypeScript手把手教程,简单易懂
- Speech recognition learning summary
- Tips 1: Web video playback code
- 猜谜语啦(142)
- Guess riddles (142)
猜你喜欢
猜谜语啦(11)
Business modeling | process of software model
Apaas platform of TOP10 abroad
Xrosstools tool installation for X-Series
How to write cover letter?
Guess riddles (10)
Sword finger offer 05 Replace spaces
猜谜语啦(8)
[nas1] (2021cvpr) attentivenas: improving neural architecture search via attentive sampling (unfinished)
MATLAB小技巧(28)模糊綜合評價
随机推荐
Tips 1: Web video playback code
[formation quotidienne - Tencent Selection 50] 557. Inverser le mot III dans la chaîne
Basic number theory - factors
Esphone retrofits old fans
Guess riddles (7)
[daily training -- Tencent selected 50] 557 Reverse word III in string
剑指 Offer 05. 替换空格
STM32 single chip microcomputer - bit band operation
Xrosstools tool installation for X-Series
Agile project management of project management
Classification of plastic surgery: short in long long long
Basic number theory - fast power
Mathematical modeling: factor analysis
[daily training] 1200 Minimum absolute difference
如何写Cover Letter?
leetcode - 445. 两数相加 II
Arduino burning program and Arduino burning bootloader
剑指 Offer 06. 从尾到头打印链表
Example 007: copy data from one list to another list.
Guess riddles (11)