当前位置:网站首页>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;
}
}

边栏推荐
- 【日常訓練--騰訊精選50】557. 反轉字符串中的單詞 III
- [matlab] matlab reads and writes Excel
- Example 008: 99 multiplication table
- 整形的分类:short in long longlong
- Xrosstools tool installation for X-Series
- Lori remote control commissioning record
- STM32 single chip microcomputer - bit band operation
- Cmder of win artifact
- 【三层架构】
- Speech recognition learning summary
猜你喜欢

MATLAB skills (28) Fuzzy Comprehensive Evaluation

Example 005: three numbers sorting input three integers x, y, Z, please output these three numbers from small to large.

Various types of questions judged by prime numbers within 100 (C language)

Sword finger offer 06 Print linked list from end to end

Guess riddles (142)

319. Bulb switch

STM32 --- serial port communication
![[three tier architecture]](/img/73/c4c75a453f03830e83cabb0762eb9b.png)
[three tier architecture]

EA introduction notes

One question per day - replace spaces
随机推荐
Run menu analysis
Business modeling of software model | overview
Low code platform | apaas platform construction analysis
Digital analog 1: linear programming
Guess riddles (5)
Array integration initialization (C language)
Old Wang's esp8266 and old Wu's ws2818 light strip
Guess riddles (8)
Arduino operation stm32
Apaas platform of TOP10 abroad
剑指 Offer 09. 用两个栈实现队列
Speech recognition learning summary
Is the security account given by Yixue school safe? Where can I open an account
L298N module use
2020-05-21
Numpy pit: after the addition of dimension (n, 1) and dimension (n,) array, the dimension becomes (n, n)
[daily training] 1200 Minimum absolute difference
STM32 summary (HAL Library) - DHT11 temperature sensor (intelligent safety assisted driving system)
[three tier architecture]
猜谜语啦(7)