我怎样才能在Solr中查询where条件?

时间:2013-12-13 08:16:01

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

我需要为搜索自动填充编写solr查询,其中用户可以输入product_name或product_style_no,其中competitor_id = 1,并返回竞争对手列表。 我使用过Spring Data Solr @Query注释,但无法在solr中实现'WHERE'条件。这是我的代码:

public interface ProductRepository extends SolrCrudRepository<Product, String>{

@Query("Product_Name:*?0* OR Product_Style_No:*?0*")
public Page<Product> findByProductNameORsku(String productName, Pageable pageable);

@Query("Page_Title:?0")
public Page<Product> findByPageTitle(String pageTitle, Pageable pageable);

} 

1 个答案:

答案 0 :(得分:2)

我假设您不希望competitor_id影响文档分数。我建议使用过滤查询。

    @Query(value="Product_Name:*?0* OR Product_Style_No:*?0*", filters={"competitor_id:1"})
    public Page<Product> findBy...

一旦competitor_id可能不应该硬编码,你也可以使用一个安置工具。

    @Query(value="Product_Name:*?0* OR Product_Style_No:*?0*", filters={"competitor_id:?1"})
    public Page<Product> findByPNameOrSjyFilterByCompetitor(String pname, int competitorId, Pageable pageable);