B.J*_*.A. 4 java solrj spring-data-solr
我正在尝试执行一个查询,就像从文档中检索一个特定字段,我在执行查询时没有获取运行时错误,但我没有得到我应该从查询中检索的3个字段,只是日期和原点,但没有变量,应该返回所有变量的变量都是空值.我如何选择我只想在查询中检索的字段?
目前我的查询如下所示:
@Query(value = "id:?0", fields = {"?1","date","origin"})
List<Data> getRecord(String id,String field);
Run Code Online (Sandbox Code Playgroud)
阅读你的评论我看到有一些关于什么是SolrJ和 Apache Solr的Spring Data的混淆.
SolrJ是Solr客户端(我个人也会添加标准和官方客户端).
SolrJ是一个API,使Java应用程序可以轻松地与Solr交谈.SolrJ隐藏了许多连接到Solr的细节,并允许您的应用程序通过简单的高级方法与Solr交互.
Apache Solr的Spring Data是更大的框架Spring Data的一部分,它提供了从Spring应用程序到Apache Solr Search Server的配置和访问(在内部与SolrJ谈论它使用SolrJ).
到目前为止,Solr Spring Data ver.1.2.0.RELEASE依赖于SolrJ 4.7.2,它可能与Solr 6.2.0不兼容(当然,如果您使用的是SolrCloud).
鉴于此适当的介绍,我建议将Solr实例和SolrJ客户端保持在同一版本(或至少在相同的主要版本上).
所以对于Solr v.6.2.1,你应该使用SolrJ 6.2.1,但遗憾的是最新的Solr Spring Data版本是2.1.3.RELEASE(内部依赖于SolrJ 5.5.0).
<dependencies>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-solr</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
关于您没有收到所需字段列表的事实,只是Solr Data不支持字段列表的占位符.
我建议扩展你的Repository类,而不是与Solr Spring Data斗争,创建一个新的RepositoryImpl,使用简单而简单的SolrJ客户端添加自定义搜索.
@Component
public class ProductsRepositoryImpl implements ProductsRepositoryCustom {
@Autowired
private SolrServer solrServer;
public ProductsRepositoryImpl() {};
public ProductsRepositoryImpl(SolrServer solrServer) {
this.solrServer = solrServer;
}
public List<Map<String, Object>> findFields(String id, List<String> fields)
{
SolrQuery solrQuery = new SolrQuery("id:" + id);
solrQuery.setFields(fields.toArray(new String[0]));
try {
QueryResponse response = this.solrServer.query(solrQuery);
return response.getResults()
.stream()
.map(d ->
{
return d.entrySet()
.stream()
.filter(e -> fields.contains(e.getKey()))
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
}).collect(Collectors.toList());
} catch (SolrServerException e) {
// TODO Auto-generated catch block
}
return Collections.emptyList();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
770 次 |
| 最近记录: |