0

我正在寻找有关 Spring data 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 data solr 生成的查询...

谢谢, Baskar.S

4

1 回答 1

0

Spring Data Solr 依赖于Standard Query Parser的行为。默认情况下,不会执行任何操作来强制排序,这意味着文档按score排序。精确的短语搜索意味着您必须引用术语字符串。您可以通过向实体添加只读分数属性来查看分配的分数,并更改带注释的查询以读取给定的字段列表。

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通过添加<logger name="org.springframework.data.solr.core.SolrTemplate" level="debug" />logback.xml来启用日志记录。

于 2015-03-16T06:59:02.280 回答