Java 数据库全文检索
我正在寻找一种高效、可读的方式来实现全文搜索。我对塞拉奇有很多要求。请参见下面的列表 要求Java 数据库全文检索,java,sql,spring,hibernate,jpa,Java,Sql,Spring,Hibernate,Jpa,我正在寻找一种高效、可读的方式来实现全文搜索。我对塞拉奇有很多要求。请参见下面的列表 要求 性能 我的数据库发展得很快。通过执行一些.stream(),将所有数据加载到堆中-魔法不是一个选项。搜索应由DBMS执行 可读性 我需要一个简单的解决方案。类似这样的复杂查询(请参见选项2)也不是解决方案。我需要一些JOINs,结果查询太复杂了。 “索引字段”的开销也是不可能的(对于大量连接的数据) 并发性 应用程序需要具有可伸缩性(使用n个实例),因此使用Lucene的解决方案不是很好 无技术混合 我
- 性能
我的数据库发展得很快。通过执行一些
,将所有数据加载到堆中-魔法不是一个选项。搜索应由DBMS执行.stream()
- 可读性
我需要一个简单的解决方案。类似这样的复杂查询(请参见选项2)也不是解决方案。我需要一些
s,结果查询太复杂了。JOIN
“索引字段”的开销也是不可能的(对于大量连接的数据) - 并发性
应用程序需要具有可伸缩性(使用n个实例),因此使用
的解决方案不是很好Lucene
- 无技术混合
我不想把逻辑混入不同的系统。这意味着,整个搜索逻辑应该用Java定义。应该避免Java逻辑和视图或sql函数的组合
这是我的老办法。但是它非常复杂,并且在自动生成的类中产生了很多问题
我喜欢这个。但只有一个大问题:指数。将索引保留在所有实例上有点过火
结果查询变得复杂,无法处理它
Java.stream()…
//有点
getAllUsers().stream()
.filter(用户->用户.getName().contains(搜索术语)
||user.getSex()包含(searchTerm)
||user.getAge().toString().equals(searchTerm)
|| ...)
我需要很多数据才能做到这一点。因此,该解决方案也不能很好地扩展我的首选解决方案。但也许还有其他(更好的)解决方案
searchfield
或类似文件
太多的联接
。太多的数据李>
您在Spring Boot应用程序中进行全文搜索的经验是什么?你知道一个能满足我的要求的解决方案吗? < P>你可以考虑Apache SoR来搜索< P>如果你已经到达Lucene,那么一步就是SOLR。我没有使用您上面提到的选项,但我确实使用过Solr,可以肯定地说,出于速度和易用性,值得一试 在你提出的四个限制条件中,前三个得到了解决,我对Solr感到满意
- 性能:Solr是这一领域经验证的候选者
- 可读性:我假设您指的是代码的可读性。尽管这取决于代码和设计是否完成,但Solr部分对代码、理解和维护非常友好,因为缺少
和其他RDBMS概念JOIN
- 并发性:来自以下官方文档:
- 跨多个服务器分发索引
- 在多台服务器上复制索引
- 合并索引
- 不混合技术:如果可以选择使用Solr,您至少有两种技术:Java和Solr。我不确定您是否希望将解决方案保留为纯Java/JEE。如果是这种情况,那么这可能无法满足这种需要