问题标签 [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.

0 投票
1 回答
1347 浏览

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?

0 投票
1 回答
937 浏览

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注释以获得独特的结果。或其他方式来获得不同的季度。

0 投票
1 回答
1085 浏览

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 查询的部分周围,这非常关键。

0 投票
1 回答
142 浏览

spring-data-solr - 有没有办法将属性变量注入到超时/最大连接到 solr-server 属性中

我正在尝试使用基于 xml 的配置来使用 spring-data-solr。我的配置文件是:

当我想将属性注入到 solr-server 属性中的 maxConnections 和超时时,出现以下错误:

有没有办法将属性字段注入那些 int 定义的属性?谢谢你 :D

截屏

0 投票
1 回答
223 浏览

solr - Solr - 父子文档

我需要将父子文档存储在 solr 中,并且需要能够将过滤器应用于父子记录,并将父子文档作为响应中的单个记录返回。有谁知道这是否可以使用 solr 实现?

0 投票
1 回答
1024 浏览

spring - 如何为多核配置带有存储库的 Spring Data Solr

对于使用具有多核支持的存储库使用 solr 设置 spring 数据是否有详细而完整的解释?

0 投票
1 回答
591 浏览

spring - 如何使用 spring data solr 实现自动完成

我正在为我的应用程序使用 spring data solr 并尝试实现自动完成功能。

我设法通过使用 spring data solr Criteria 为单个字段实现自动完成。但这有缺点,因为这将返回一个用户实体列表。我必须迭代用户列表并获取名称。

1. 有什么方法可以让我只使用 spring data solr获得匹配的名称?

2. 如果我需要跨多个字段(名称和地址一起)实现自动完成,是否可以使用 spring data solr 来实现?

0 投票
1 回答
1045 浏览

solr - 通过 Criteria API 添加原始查询参数

我找不到答案。我发现以前的类似问题没有答案。我想使用 Spring data solr 进行查询。但@Query不足以满足我的需求。据我了解,您在此处提供的任何内容都将成为qsolr 的“选择”处理程序的参数。

就我而言,我需要添加更多参数,例如sfield空间搜索。如果@Query不削减它,我准备通过自动装配编写自定义存储库实现SolrTemplate,但是然后CriteriaAPI 似乎也不允许我添加原始查询参数。

任何帮助/点将不胜感激。

0 投票
1 回答
396 浏览

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
0 投票
1 回答
2421 浏览

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: