我正在寻找一种表演的方式和可读的方式来实现全文搜索。我对说教有很多要求。见下面的列表。
要求
.stream()-magic并不是一种选择。搜索应该由DBMS执行。JOIN,结果的查询非常复杂。
使用“索引字段”的开销也是不可能的(对于大量连接的数据)。Lucene的解决方案不是很好的下面是一个例子。发现的选项
Java.stream()... // user().stream().filter(用户-> user.getName().contains(searchTerm) \x{e76f}\x{e76f}(.contains(SearchTerm)\x{e76f}\x{e76f}(user.getAge().toString()
我需要很多数据才能做到这一点。因此,这一解决方案也不会很好地推广。SearchFiled或类似的太多JOINS。数据太多了。问题
您在Spring应用程序中使用全文搜索的经验是什么?你知道满足我要求的解决方案吗?
发布于 2020-01-08 14:58:15
如果你已经到达卢塞尼,那么还有一步就是索尔。我没有使用您前面提到的选项,但我肯定使用了Solr,可以肯定地说,它值得一试,速度快,使用方便。
在你提出的四个约束中,前三个都被处理好了,我和Solr在一起。
JOIN和其他关系数据库管理系统的概念,Solr部分对代码、理解和维护非常友好。Lucene和Solr都被设计成支持使用最小定制编码的大型实现。
在这方面,Solr可以做以下工作:
然而,这一要求:
搜索应该由DBMS执行。
肯定没有照顾到。
此外,除了自定义设计之外,还不能想到一种用于此的方式:
将索引up2date保留在所有实例上有点过分。
A警告:--如果您对Solr还不熟悉的话,可能需要一些时间才能很好地掌握Solr。
发布于 2020-01-08 14:45:31
您可以考虑apache solr进行搜索。
https://stackoverflow.com/questions/59647956
复制相似问题