[英]Natural Language searching - solr
我正在嘗試使用solr搜索以以下格式搜索帶有過濾器的產品
三星手機低於10000
名稱和價格是單獨的字段。 預期結果是顯示所有價格低於10000盧比的三星手機。
但是現在搜索結果僅基於名稱字段。 可以通過單個查詢考慮所有字段來執行此搜索嗎?
我的查詢:
http://localhost:8983/solr/myproducts/select?indent=on&q=memory card below 1000&rows=100&wt=json
我的data-config.xml是:
<entity name="master_products"
pk="id"
query="select p.* ,b.* ,c.* from master_products p ,master_brands b,master_product_categories c where b.id=p.brand_id and c.id=p.product_category_id"
deltaImportQuery="SELECT * FROM master_products WHERE product_name='${dataimporter.delta.product_name}' "
>
<!-- or b.brnad='${dataimporter.delta.brand}' -->
<field column="product_name" name="name"/>
<field column="product_description" name="description"/>
<field column="id" name="id"/>
<field column="mrp" name="mrp"/>
<field column="brand_id" name="brandID"/>
<entity name="master_brands"
query="select * from master_brands"
deltaImportQuery="select * from master_brands where id ={master_products.brand_id}" processor="SqlEntityProcessor" cacheImpl="SortedMapBackedCache" >
<field column="brand" name="brand" />
</entity>
<entity name="master_product_categories"
query="select * from master_product_categories"
deltaImportQuery="select * from master_product_categories where id ={master_products. product_category_id}" processor="SqlEntityProcessor" cacheImpl="SortedMapBackedCache" >
<field column="category" name="category" />
</entity>
</entity>
有幾種不同的方法可以實現您的要求。 如果要保持簡單,並且對查詢解析器沒有限制,則可以通過以下方式使用eDismax查詢解析器:
http://localhost:8983/solr/myproducts/select?indent=on&q=memory card below 1000&defType=edismax&qf=name description&rows=100&wt=json
哪里有QF:
qf(查詢字段)參數
qf參數引入了一個字段列表,每個字段都分配了一個提升因子,以增加或減少該特定字段在查詢中的重要性。 例如,下面的查詢:
qf =“ fieldOne ^ 2.3 fieldTwo fieldThree ^ 0.4”
將fieldOne分配為2.3的增強值,將fieldTwo保留為默認增強值(因為未指定增強因子),並且將fieldThree分配為0.4的增強值。 這些提升因子使fieldOne中的匹配比fieldTwo中的匹配重要得多,而fieldTwo中的匹配又比fieldThree中的匹配重要得多。
從您的問題尚不清楚,是否還需要過濾1000以下的結果,如果需要,請告訴我,我將編輯答案,並將相關過濾器添加到查詢中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.