Spring Data Solr短语搜索和排序

时间:2015-03-14 03:47:56

标签: solr spring-data spring-data-solr

我正在寻找有关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

1 个答案:

答案 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" />的日志记录。