1.MySQL(5.7以上版本)提供的ngram功能
(1)创建字段设置为全文索引类型并且解析器为ngram
CREATE TABLE `t_ngram` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
PRIMARY KEY (`id`),
FULLTEXT KEY `name` (`name`) /*!50100 WITH PARSER `ngram` */
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
(2)设置初始值进行测试
INSERT INTO `test`.`t_ngram` (`id`, `name`) VALUES (1, '123我爱中国');
INSERT INTO `test`.`t_ngram` (`id`, `name`) VALUES (2, '我是1中国人你呢');
(3)进行全文索引查询
SELECT
id, name
FROM
t_ngram
WHERE
MATCH (name) AGAINST ('123中国' );
2.使用redis模块RediSearch(如果是阿里云redis企业版则是TairSearch)
注意: 阿里云的命令和RediSearch有区别
TairSearch客户端试用:
@Test
public void t1() throws InterruptedException {
try (Jedis jedis = jedisPool.getResource()) {
jedis.select(16);
TairSearch tairSearch = new TairSearch(jedis);
// String tftcreateindex = tairSearch.tftcreateindex("test-index", "{\"mappings\":{\"properties\":{\"product_group\":{\"type\":\"text\",\"analyzer\":\"chinese\"}}}}");
//System.out.println(tftcreateindex);
// String tftgetindexmappings = tairSearch.tftgetindexmappings("test-index");
// System.out.println(tftgetindexmappings);
//Map<String, String> docs = new HashMap<>();
//docs.put("{\"product_group\":\"王芳老师讲经典小古文王芳老师讲《琵琶行》小课包\"}","1");
//docs.put("{\"product_group\":\"王芳老师讲神奇的世界地图【地理初级课】经典小古文小课包\"}","2");
//String tftmadddoc = tairSearch.tftmadddoc("test-index", docs);
//System.out.println(tftmadddoc);
//String tftsearch = tairSearch.tftsearch("test-index", "{\"query\":{\"match_all\":{\"boost\":1.2}}}");
//System.out.println(tftsearch);
String tftsearch = tairSearch.tftsearch("test-index", "{\"query\":{\"match\":{\"product_group\":\"琵琶行初级\"}}}");
System.out.println(tftsearch);
}
本文由 GY 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2022/09/07 06:45