首页 > 解决方案 > 有没有其他方法可以在Java中实现没有elasticsearch的搜索功能

问题描述

我是 Web 服务器端的新手开发人员。我为商店开发了一个应用程序来管理他们的订单。这里有一个问题。我有一个订单表,如:

orderId,orderNumber …

orderProduct 表如

orderProductId, productId, productNumber, productName, productDescription.

我有一个搜索功能,通过 searchString 获取所有订单。api就像

Get /api/orders?productNumberSearch={searchStr}&productNameSearch={searchStr2}&productDescriptionSearch={searchStr3}

我的 Impl 就像

String queryStr1 = getParameterFromRequestWithDefault(“productNumberSearch”,”");
String queryStr2 = getParameterFromRequestWithDefault(“productNameSearch”,”");
String queryStr3 = getParameterFromRequestWithDefault(“productDescriptionSearch”,”");
List<OrderProduct> orderProducts = getAllOrderProductsFromDatabase();
List<Interger> filterOrderIds = orderProducts.stream().filter(item->{ 
    return item.getName().contains(queryStr1) && item.getNumber().contains(queryStr2) &&  item.getDescription().contains(queryStr3)
 }).collect(Collectors.toList());
List<Order> orders = getOrdersByIds(filterOrderIds);

我使用spring mvc和mysql。上面的代码有效。但是,如果有很多请求同时到达,就会抛出内存不足异常。万一数据库有汉字,mysql全文搜索不好用?那么有没有其他方法可以在没有elasticsearch的情况下实现搜索功能

标签: javamysqlsearch

解决方案


推荐阅读