2013-12-13 4 views
0

Мне нужно написать запрос solr для автозаполнения поиска, где пользователь может ввести product_name ИЛИ product_style_no, где competitor_id = 1, и возвращает список конкурентов. Я использовал аннотацию Spring Data Solr @Query, но не смог реализовать условие «WHERE» в solr. Вот мой код:Как я могу запросить условие where в Solr?

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

} 

ответ

2

Я предполагаю, что вы не хотите competitor_id влиять на оценку документа. Я бы предложил использовать запрос фильтра.

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

После competitor_id, вероятно, не должны быть зашиты вы можете использовать placehoder, а также.

@Query(value="Product_Name:*?0* OR Product_Style_No:*?0*", filters={"competitor_id:?1"}) 
    public Page<Product> findByPNameOrSjyFilterByCompetitor(String pname, int competitorId, Pageable pageable); 
Смежные вопросы