标签: spring-data-solr

Spring solr动态场anotation

我正在尝试执行一个查询,就像从文档中检索一个特定字段,我在执行查询时没有获取运行时错误,但我没有得到我应该从查询中检索的3个字段,只是日期和原点,但没有变量,应该返回所有变量的变量都是空值.我如何选择我只想在查询中检索的字段?

目前我的查询如下所示:

  @Query(value = "id:?0", fields = {"?1","date","origin"})
   List<Data> getRecord(String id,String field);
Run Code Online (Sandbox Code Playgroud)

java solrj spring-data-solr

4
推荐指数
1
解决办法
770
查看次数

如何使用spring-data-solr构建FacetQuery,它返回solr索引中的所有文档(*:*)

我想编写一个FacetQuery,除了一个过滤条件(fq)之外,它可能没有任何标准.以下查询是我想使用spring-data-solr API构建的示例.

http://localhost:8983/solr/jpevents/select?q=*:*&fq=categoryIds:(1101)&facet=true&facet.mincount=1&facet.limit=1&facet.field=primaryCategoryId
Run Code Online (Sandbox Code Playgroud)

如何在FacetQuery中设置查询参数(q =*:*)?

环境:我正在使用带有Solr 4.4.0和Spring 3.2.4.RELEASE的spring-data-solr 1.0.0.RELEASE编写基于Spring MVC的Search API.

java spring solr solrj spring-data-solr

3
推荐指数
1
解决办法
5626
查看次数

自定义存储库的Spring Data Solr优先级

我需要在Spring Data Solr自定义存储库中实现以下内容:

(X或Y)和Z.

我目前的代码如下:

Criteria criteria = new Criteria("x").is(X_VALUE);
criteria = criteria.or(new Criteria("y").is(Y_VALUE);
criteria = criteria.and(new Criteria("z").is(Z_VALUE);
Run Code Online (Sandbox Code Playgroud)

但运行此代码我得到以下优先权:

X OR(Y和Z)

有任何想法吗?

java spring solr spring-data spring-data-solr

3
推荐指数
1
解决办法
1311
查看次数

如何在单个 solr 建议器中配置多个上下文字段?

我正在使用 apache solr 来搜索当前应用程序中的记录。

我可以通过配置上下文字段来根据 DocumentType 过滤建议。

现在我想添加另一个上下文字段,例如departmentType。我不确定如何为多个上下文字段配置建议器。

这是与单个上下文字段一起使用的建议器,并且工作正常。

 <searchComponent name="suggest" class="solr.SuggestComponent">
  <lst name="suggester">
     <str name="name">suggesterByName</str>
     <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
     <str name="dictionaryImpl">DocumentDictionaryFactory</str>
     <str name="field">fullName</str>
     <str name="contextField">documentType</str>
        <str name="suggestAnalyzerFieldType">text_general</str>
     <str name="buildOnStartup">false</str>
   </lst>
 </searchComponent>
Run Code Online (Sandbox Code Playgroud)

我参考这篇文章 https://issues.apache.org/jira/browse/SOLR-7888

但仍然不清楚如何在单个建议器中配置多个上下文字段。

solr spring-data-solr

3
推荐指数
1
解决办法
2731
查看次数

如何在控制台或文件中记录 spring data 生成的 solr 查询

如何在控制台或文件中记录 spring data 生成的 solr 查询。我正在使用 Spring Boot 版本 1.4.3.RELEASE 中的 spring-data-solr 版本 2.0.6.RELEASE。

我正在尝试在文件或控制台中记录语句,因为我们可以在 spring-data-jpa 中为 sql 语句执行此操作。

java spring-data-solr spring-boot

3
推荐指数
1
解决办法
3107
查看次数

如何使用Spring Data Solr为多个核心和存储库实现自定义Solr存储库

我希望使用spring-data-solr在一个服务中访问多个/ 2个repos.从Spring Data Solr多核和存储库我知道'通过命名空间配置的多核支持不幸是一个悬而未决的问题'.

能否请您帮我解决以下示例,如何创建自定义Repos?

我的applicationContext.xml有两个Solr模板定义如下:

<!-- Enable Solr repositories and configure repository base package -->
<solr:repositories base-package="com.ay.api.repository"/>

<!-- Configures HTTP Solr server -->
<solr:solr-server id="solrServer" url="${solr.server.url}"/>

<!-- Configures Solr Events template -->
   <bean id="solrEventsTemplate" class="org.springframework.data.solr.core.SolrTemplate">
   <qualifier type="solrEventsTemplate"/>
   <constructor-arg index="0" ref="solrServer"/>
   <constructor-arg index="1" value="${solr.server.events.core.name}"/>
</bean>

<!-- Configures Solr Towns template -->
<bean id="solrTownsTemplate" class="org.springframework.data.solr.core.SolrTemplate">
<constructor-arg index="0" ref="solrServer"/>
<constructor-arg index="1" value="${solr.server.towns.core.name}"/>
</bean>
Run Code Online (Sandbox Code Playgroud)

我有以下回购

@Repository
public class EventDocumentRepositoryImpl implements EventSearchRepository { 


@Resource
@Qualifier("solrEventsTemplate")
private SolrTemplate solrEventsTemplate;

...
} …
Run Code Online (Sandbox Code Playgroud)

java spring solr solrj spring-data-solr

2
推荐指数
1
解决办法
6252
查看次数

如何使用EmbeddedSolrServer和多核支持设置Spring Data Solr?

我正在使用Spring Data Solr在我的项目中实现搜索模块.为了启用多核支持,我只是实例化一个HttpSolrServer,然后使用声明一个基于java的Spring配置类@EnableSolrRepositores(multicoreSupport=true).一切都很完美,直到我尝试为Solr相关代码和模式编写集成测试.

我想使用EmbeddedSolrServer进行测试,以便测试可以在不依赖外部Solr服务器的情况下运行,但我找不到正确配置的方法.请指教.

spring-data-solr

2
推荐指数
1
解决办法
2335
查看次数

使用Spring-Data-Solr注入存储库

我对Spring很陌生,以为我会尝试spring-data-solr。

当我尝试注入TeamRepository时,似乎出现了问题,TeamRepository是扩展SolrCrudRepository的空接口。我试过使用anatedatedConfiguration和XmlConfiguration甚至两者都使用,而且似乎没用。

我正在启动的堆栈跟踪是:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Disconnected from the target VM, address: '127.0.0.1:54211', transport: 'socket'
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'repositoryTeamIndexService': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: public app.solr.repository.solr.TeamRepository app.solr.repository.RepositoryTeamIndexService.repository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'teamRepository': FactoryBean threw exception on object creation; nested exception is java.lang.NullPointerException
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:288) …
Run Code Online (Sandbox Code Playgroud)

java spring spring-data spring-data-solr

2
推荐指数
1
解决办法
1038
查看次数

Spring Solr - 将多个客户端用于不同的服务

我正在使用一个聚合来自多个来源的数据的应用程序.在这种情况下,我需要使用不相关的数据连接到两个不同的Solr服务.为此,我设置了两个不同的数据存储库.我已经定义了bean如下:

@Configuration
@EnableSolrRepositories(basePackages={"foo.utilities.solr.repos.gcr"}, multicoreSupport=true)
public class GcrSolrContext {

    @Bean
    public SolrClient solrClient() {
        return new HttpSolrClient("http://foo:8086/solr/gcr");
    }

    @Bean
    public SolrTemplate solrTemplate(SolrClient client) throws Exception {
        return new SolrTemplate(client);
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我无法弄清楚如何拥有两个完全独立的Solr客户端,每个客户端指向不同的URL.由于需要bean solrClient()和solrTemplate(),并且尝试使用不同的URL创建新的Context,只需使用首先创建的bean覆盖solrClient和solrTemplate bean.如果它们是唯一定义的Solr客户端,则每个客户端都可以正常工

简而言之,我如何创建两个(或更多)不同的Spring Solr客户端,每个客户端连接到不同的URL?

附加信息是对评论的回复......

我试图简单地重新创建具有不同配置的SolrContext类.考虑以下内容:

@Configuration
@EnableSolrRepositories(basePackages={"foo.utilities.solr.repos.different"}, multicoreSupport=true)
public class DifferentSolrContext {

    @Bean
    public SolrClient solrClient() {
        return new HttpSolrClient("http://SomethingDifferent:8086/solr/something");
    }

    @Bean
    public SolrTemplate solrTemplate(SolrClient client) throws Exception {
        return new SolrTemplate(client);
    }
}
Run Code Online (Sandbox Code Playgroud)

这里发生的是@ Bean的solrClient和solrTemplate在启动期间创建bean时被覆盖.

INFO : org.springframework.beans.factory.support.DefaultListableBeanFactory - Overriding bean definition for bean 'solrClient' with a …
Run Code Online (Sandbox Code Playgroud)

spring solr spring-data-solr

2
推荐指数
1
解决办法
433
查看次数

休眠搜索vs弹簧数据solr,弹簧数据弹性搜索

我有一个Spring Boot,Spring Data JPA(休眠)Web应用程序,想要引入文本搜索功能。

我了解以下内容

  • 休眠搜索或spring-data- *都可以集成到我的应用中

  • 休眠搜索可以与嵌入式Lucene或外部弹性搜索一起使用。

  • 外部弹性搜索/ Solr有其自身的优势,但我可以接受

    嵌入式也从这里开始。

我的问题

  • 哪个库更易于开发和维护。
  • 我看到solr vs elasticsearch的许多优缺点,但是需要Hibernate search vs spring-data- *的优点和缺点
  • 我找到了一个在现有应用程序中引入Hibernate Search的示例。但spring-data-上没有任何内容,如何在spring-data-中重新索引或触发现有数据库数据的索引

hibernate-search spring-data spring-data-jpa spring-data-solr spring-data-elasticsearch

2
推荐指数
1
解决办法
1025
查看次数

Solr:搜索包含连字符的字段

我正在使用 spring-data-solr(version = 1.4.0.RELEASE) 搜索包含连字符但得到零结果的字段。我的索引字段之一包含“沃尔玛”的值,当我搜索“wal”时,它给出了正确的结果,但在搜索“wal-”时,我得到的结果为零。我之前尝试添加转义反斜杠字符 - 但它没有帮助。有人可以请告知这里可能是什么问题吗?

下面是我的 schema.xml 的快照。

            <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <!-- Case insensitive stop word removal.
    -->
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            />
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.StopFilterFactory"
            ignoreCase="true"
            words="lang/stopwords_en.txt"
            />
    <filter …
Run Code Online (Sandbox Code Playgroud)

solr solrj spring-data-solr

1
推荐指数
1
解决办法
1174
查看次数

java.lang.VerifyError:使用 Spring Boot Data solr 时无法从 Final 类继承

我有一个与 Spring Boot 1.4.2.RELEASE 一起运行的 REST Web 服务。我尝试在我的项目中使用 spring data solr,但出现了VerifyError。

Caused by: java.lang.VerifyError: Cannot inherit from final class
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_40-ea]
at java.lang.ClassLoader.defineClass(ClassLoader.java:760) ~[na:1.8.0_40-ea]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) ~[na:1.8.0_40-ea]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:455) ~[na:1.8.0_40-ea]
at java.net.URLClassLoader.access$100(URLClassLoader.java:73) ~[na:1.8.0_40-ea]
at java.net.URLClassLoader$1.run(URLClassLoader.java:367) ~[na:1.8.0_40-ea]
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) ~[na:1.8.0_40-ea]
at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_40-ea]
at java.net.URLClassLoader.findClass(URLClassLoader.java:360) ~[na:1.8.0_40-ea]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_40-ea]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) ~[na:1.8.0_40-ea]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_40-ea]
at org.apache.http.impl.client.DefaultHttpClient.createHttpParams(DefaultHttpClient.java:158) ~[httpclient-4.5.2.jar:4.5.2]
at org.apache.http.impl.client.AbstractHttpClient.getParams(AbstractHttpClient.java:467) ~[httpclient-4.5.2.jar:4.5.2]
at org.apache.solr.client.solrj.impl.HttpClientUtil.setFollowRedirects(HttpClientUtil.java:290) ~[solr-solrj-5.5.3.jar:5.5.3 8655b97b27d8da470c8235683af11a8b85a2b10f - anshum - 2016-09-01 13:05:41]
at org.apache.solr.client.solrj.impl.HttpClientConfigurer.configure(HttpClientConfigurer.java:58) ~[solr-solrj-5.5.3.jar:5.5.3 8655b97b27d8da470c8235683af11a8b85a2b10f - anshum - 2016-09-01 …
Run Code Online (Sandbox Code Playgroud)

verifyerror solrj spring-data-solr spring-boot spring-rest

0
推荐指数
1
解决办法
7015
查看次数