【问题标题】:Natural Language searching - solr自然语言搜索 - solr
【发布时间】:2016-11-17 01:00:00
【问题描述】:

我正在尝试使用 solr search 搜索具有以下格式的过滤器的产品

三星手机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>  

【问题讨论】:

标签: php search solr


【解决方案1】:

有几种不同的方法可以实现您的要求。如果您想保持简单并且对查询解析器没有限制,那么您可以通过以下方式使用 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 保留为默认值 boost(因为没有指定 boost 因子),而 fieldThree 是一个 boost 0.4。这些助推因素使现场比赛更加精彩 比 fieldTwo 中的匹配更重要 比 fieldThree 中的匹配项重要。

您的问题不清楚是否还需要过滤低于 1000 的结果,如果您需要,请告诉我,我将编辑答案,将相关过滤器添加到查询中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2011-12-17
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多