问题标签 [spring-data-solr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 Spring Data Solr 中使用 POST 方法进行大查询
我在我的项目中使用 Spring Data Solr。在某些情况下,生成的 Solr 查询太大(例如 15Kb+)并导致 Solr 异常。此解决方案:http ://codingtricks.fidibuy.com/participant/join/54fce329b760506d5d9e7db3/Spring-Data-Solr-cannot-handle-long-queries 对于某些查询仍然失败。由于通过 POST 直接将这些查询发送到 Solr 工作正常,我选择朝这个方向工作。我在 Spring Data Solr 中找不到任何配置查询的首选方法(GET/POST)的方法。因此,我得出了以下解决方案:我扩展了 SolrServer
(跳过了一些细节,setCore() 和 isBigQuery() 是微不足道的,也被跳过了)并将其用作 SolrConfiguration.class 中的 SolrServer bean:
这工作正常,但有几个缺点:我必须将 multiCoreSupport 设置为 false。这样做是因为当 Spring Data Solr 从接口实现存储库时,它上面的 multiCoreSupport 使用 MultiCoreSolrServerFactory 并尝试为每个核心存储一个服务器,这是通过将它们克隆到持有地图来完成的。自然,它在定制的 SolrServer 上崩溃,因为 SolrServerUtils 不知道如何 clone() 它。此外,我必须手动设置核心,而不是享受 Spring Data 从实体类上的@SolrDocument 注释参数中提取它。
以下是问题 1)主要和一般问题:是否有任何合理的方法来解决 Spring Data Solr 中查询过长的问题(或者更具体地说,使用 POST 而不是 GET)?2)一个小问题:有没有一种合理的方法可以在 Spring Data Solr 中自定义 SolrServer 并维护 multiCoreSupport?
java - 如何在 Solr 的 @Query 注释中添加组字段
我添加了一种方法来根据书籍和年份的值获取我的存储库类
public interface Repository extends SolrCrudRepository<Doc, Long> {
@Query(fields = { Constants.QUARTER_FIELD })
public List<CodingClinicDoc> findQuarterByBookAndYear(String book, int year);
}
但我得到重复的值,例如“第一季度”大约 10 次
请告诉我是否有办法将组字段group=true&group.field=quarter
应用于@Query
注释以获得独特的结果。或其他方式来获得不同的季度。
spring-boot - 在 Spring boot 中使用新版 Spring data Solr
我在 Spring 引导应用程序 (1.2.7) 中使用 Spring Data Solr。现在,由于自定义存储库的 Spring Data Solr Precedence,我必须至少将 Spring Data Solr 更新到 1.4.x,而它目前在 1.3.x 上。
但是,如果我明确添加以下依赖项:
我运行应用程序,我得到以下异常:
我知道您通常应该信任 Spring boot 本身的依赖管理,但这意味着您无法使用标准将括号括在 Solr 查询的部分周围,这非常关键。
spring-data-solr - 有没有办法将属性变量注入到超时/最大连接到 solr-server 属性中
我正在尝试使用基于 xml 的配置来使用 spring-data-solr。我的配置文件是:
当我想将属性注入到 solr-server 属性中的 maxConnections 和超时时,出现以下错误:
有没有办法将属性字段注入那些 int 定义的属性?谢谢你 :D
solr - Solr - 父子文档
我需要将父子文档存储在 solr 中,并且需要能够将过滤器应用于父子记录,并将父子文档作为响应中的单个记录返回。有谁知道这是否可以使用 solr 实现?
spring - 如何为多核配置带有存储库的 Spring Data Solr
对于使用具有多核支持的存储库使用 solr 设置 spring 数据是否有详细而完整的解释?
spring - 如何使用 spring data solr 实现自动完成
我正在为我的应用程序使用 spring data solr 并尝试实现自动完成功能。
我设法通过使用 spring data solr Criteria 为单个字段实现自动完成。但这有缺点,因为这将返回一个用户实体列表。我必须迭代用户列表并获取名称。
1. 有什么方法可以让我只使用 spring data solr获得匹配的名称?
2. 如果我需要跨多个字段(名称和地址一起)实现自动完成,是否可以使用 spring data solr 来实现?
solr - 通过 Criteria API 添加原始查询参数
我找不到答案。我发现以前的类似问题没有答案。我想使用 Spring data solr 进行查询。但@Query
不足以满足我的需求。据我了解,您在此处提供的任何内容都将成为q
solr 的“选择”处理程序的参数。
就我而言,我需要添加更多参数,例如sfield
空间搜索。如果@Query
不削减它,我准备通过自动装配编写自定义存储库实现SolrTemplate
,但是然后Criteria
API 似乎也不允许我添加原始查询参数。
任何帮助/点将不胜感激。
java - Tomcat 在关机时挂起
我们开始在我们的项目中使用 spring-data-solr 来处理我们需要实现的一些管理用例。
设置
我们对 spring-data-solr 的设置非常简单:
目前我们正在使用一个Repository
扩展SolrCrudRepository
并且自动连接到Controller
.
问题
关闭 Tomcat 时,它会挂起 10 分钟Destroying the ProtocolHandler
。
Threaddump 不提供更多信息,除了 -ThreadsearcherExecutor
被停放。
有任何想法吗?
版本
- 索尔:4.7.2
- Spring-Data-Solr:1.5.4.RELEASE
- 春天:4.2.5.RELEASE
- 雄猫 7.0.53
- Java 1.8.0u65
- 赢 7 和 CentOS 6.6
spring-data-solr - Spring Data Solr:声明字段时如何将multiValue设置为false
我正在使用带有 Schemaless Solr 的 Spring Data Solr。有些点我无法连接:何时以及如何创建架构字段?
每当刷新应用程序上下文并根据属性配置将新字段填充到索引中时,自动模式填充将检查您的域类型。这需要 solr 以无模式模式运行。
使用 @Indexed 提供额外的细节,比如要使用的特定 solr 类型。
它还显示一个 curl 请求:
// curl ../solr/collection1/schema/fields -X POST -H 'Content-type:application/json'
但是,当我运行一个使用 @Indexed 注释的字段的简单示例时,我看不到 SOLR 上调用 /schema/fields API。这些字段是如何创建的?
我问的原因是它们似乎是使用 multiValued=true 自动创建的。我没有看到 @Indexed 注释将 multiValued 作为参数。如何在创建字段时强制 Spring Data Solr 将字段声明为非多值?
现在,所有这一切都是为了解决我看到的这个异常。
我的猜测是发生异常是因为值作为集合返回?
我试图通过代码来了解发生了什么。导致问题的字段是“名称”,值为 [product-1]。尝试将 solr 文档解组为 POJO 时发生异常。
首先我们进入下面的方法:
调用该方法时,值为集合,类型为java.lang.String。这会导致 if(documentValue instanceof Collection) 被选中,从而导致执行以下方法:
在这个方法中,我们最终调用 type.getComponentType(),它返回 null 并最终导致 Assert.notNull() 失败。
我在这一切中缺少什么?
我的代码如下。启动和配置类:
型号类:
存储库:
测试类:
最后,我的 POM: