我需要为搜索自动填充编写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);
}
答案 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);