一个Java应用问题?

我有一个搜索类型的下拉框,可以输入关键字来缩小范围,但如图1所示名称可能会重复,所有我想再将地址加入模糊匹配,例如传:阿三 成都,空格分开。
后端的朋友说不好实现是为什么?在调SQL之前将字符串切割后再调SQL匹配不行吗?


回答:

首先名字本身就有空格怎么办


回答:

从后端的角度来看倒是没有难度,但是有歧义。

先说难度上的问题,http协议如果是通过query参数传参,本身就是是可以传列表的,可以是
?query=a&query=b,也可以是?query=a,b。如果你后端同事用java springboot,可以直接指定query的入参类型是List,springboot和tomcat可以直接把你前端传的参数给他转换成List,甚至都不用切割。如果参数带有url非法字符的话,那就需要前端先进行url编码,但总归肯定是可以传的。

然后是歧义上的问题。从后端的角度来看,这个接口的入参变成了一个可变长的列表,长度是0到2.关键你问题里也没有写人名和地名的关键词有没有必选,那么你传给后端长度为1的列表的时候,后端无法区分这一个字符串到底是人名的关键字还是地址的关键字。你传给后端长度为2的列表的时候,除非你们提前约定了,否则后端不能确定哪一个是人名的关键字。在后端调sql的时候这些还是要确定清楚的。

从扩展接口的功能上看,后续有没有可能查多个人名的关键字?有没有可能查多个人名+多个地名的关键字?这样复杂的参数用一个query参数传参就很难描述清楚。所以我觉得你如果非要后端配合的话,你们应该在接口上加一个addressKeyword参数用来描述地址的关键字,而不是把它加在人名的关键字里。


回答:

我觉得还是得回到需求。
你想解决的是姓名重复的情况的下加地区,但是姓名有多大几率重复啊?
加入空格多字段搜,你还要设计这个页面,给用户足够的提示告诉他怎么用?搜的是哪几个字段,是全部命中才显示,还是在命中的基础上做排序,还是命中一个即可?
这些都要考虑。
做的话都能做,后端做,sql字段多匹配几次嘛,前端也能做,你只传第一个参数,空格后面的你在获取后端数据后做筛选也是可以的。

以上是 一个Java应用问题? 的全部内容, 来源链接: utcz.com/p/945425.html

回到顶部