0

我需要为搜索自动完成编写一个 solr 查询,用户可以在其中输入 product_name 或 product_style_no wherepetitor_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);

} 
4

1 回答 1

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);
于 2013-12-13T08:29:56.347 回答