【问题标题】:Spring Data Solr phrase search and SortingSpring Data Solr 短语搜索和排序
【发布时间】:2015-03-14 03:47:56
【问题描述】:

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

谢谢, 巴斯卡尔.S

【问题讨论】:

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


    【解决方案1】:

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

    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)。

    如果您想在执行前打印出查询,请通过将&lt;logger name="org.springframework.data.solr.core.SolrTemplate" level="debug" /&gt; 添加到logback.xml 来启用SolrTemplate 的日志记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 2015-08-28
      • 2012-08-12
      • 1970-01-01
      相关资源
      最近更新 更多