我正在寻找有关Spring数据solr短语搜索和排序的帮助。
当我搜索" Spring Data"时,它应该返回具有" Spring Data"的数据。在里面。
> Ex:- Should return --- Spring Data is good
> Should return --- 123Spring Data123 is good
> Should not return --- Spring and Data
此外,结果应该是基于匹配字段数的排序顺序。
当我从用户那里得到搜索输入时,我会搜索如下。
public interface SolrSecurityRepository extends
SolrCrudRepository<SolrSecurity, String> {
@Query(value = "subject:*?0* OR content:*?0*")
List<SolrSecurity> find(String searchStr,
Pageable pagebale);
}
不确定如何实现精确的词组匹配....
另外,无论如何都要启用调试来查看Spring数据解析器生成的查询...
谢谢, Baskar.S
答案 0 :(得分:0)
Spring Data Solr依赖于Standard Query Parser的行为。默认情况下,不执行任何操作以强制执行排序,这意味着文档按 score 排序。精确的短语搜索意味着您必须引用术语字符串。您可以通过向实体添加 readonly 得分属性来查看分配的分数,并更改带注释的查询以读取给定的字段列表
class SomeDocument {
@Id String id;
@Indexed(readonly=true) Float score;
// ...
}
@Query(value = "subject:*?0* OR content:*?0*", fields={"*","score"})
List<SomeDocument> find(String searchStr, Pageable pagebale);
或者只使用文档中的@Score
(目前仅适用于1.4.RC1)。
如果要在执行前打印出查询,请通过将SolrTemplate
添加到 logback.xml 来启用<logger name="org.springframework.data.solr.core.SolrTemplate" level="debug" />
的日志记录。