java - 有没有其他方法可以在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的情况下实现搜索功能
解决方案
推荐阅读
- git - 将现有的已提交工作移至新的本地分支
- powershell - System.String[] - 结果
- java - python:不使用字符串发送字符串值
- javascript - 无法获取对象而不是数组
- terraform - Terraform 提供者 - 您将如何表示没有明确定义的 CRUD 操作的资源?
- java - 如何在 kubernetes 环境中使用 spark 配置 beam python sdk
- vb.net - 当被要求时,Visual Basic 表单不会处理所有项目
- bash - Anaconda 是否检查 bashrc 文件以获取 CC?小路?
- flutter - 颤振 sqflite DatabaseException 没有这样的表
- java - 是否可以在 Android 中为某些应用程序添加“请勿打扰”的例外情况?