【问题标题】:How to boost AND in a solr query?如何在 solr 查询中提升 AND?
【发布时间】:2014-04-25 04:52:41
【问题描述】:
  1. 假设用户输入一个双字输入进行搜索,因为应用的默认布尔值是 OR,所有包含所有或两个条目的条目都会出现。 我有兴趣知道的是,是否可以提升专门满足 AND 条件的条件。
  2. 如果有多个词,是否可以指定词来暗示搜索时的特定约束,或者在这些词存在的情况下提升几个参数。例如:如果输入是“带 x 和 y 不带 z”,我可以让我的solr 将其解释为 (x AND y) AND (Not z)?或者至少增加那些部分或完全满足要求的条目?

编辑: 我尝试过使用带有 edismax 的 boost,如下所示:

$query = $client->createSelect();                                   //create search query
        $query->setQuery('memberType:'.$searchQuery.' firstName:'.$searchQuery.' gender:'.$searchQuery); //include fields required for searching                         //meantion fields to be searched and search query/ies
        $edismax = $query->getEDisMax();
        $edismax->setQueryFields('firstName memberType^3 gender^2');                            //boost fields
        $query->setStart($start)->setRows($rows);                           //vary bracketted numbers to vary results staring point and no. of rows to be displayed, use variables instead of constants
        $query->setFields(array('id', 'firstName', 'lastName', 'eid', 'gender', 'memberType'));  //set return fields
        //$query->addSort('id', $query::SORT_ASC);                //sort field and customisations

        $resultSet = $client->select($query); 

当我搜索具有特定成员类型的名称时,例如“sanjay 候选人”,我希望顺序是包含 sanjay 和候选人的条目,然后是所有候选人的用户,然后是所有 sanjay 的用户,但是我得到 sanjay 和候选人,然后是所有 sanjay 和所有候选人。

我无法弄清楚问题可能是什么,或者我是否可以提供更个性化的提升。

【问题讨论】:

    标签: solr scoring


    【解决方案1】:

    如果您使用的是 eDismax,您将拥有一整套用于短语、二元组、单独的提升查询等的提升选项。阅读the wiki page 并进行实验。您不需要为此场景进行任何自定义编码。

    【讨论】:

    • 感谢您的回复。我仍在学习各种提升方法。但是如果没有实际的例子,很难将它们联系起来。你能告诉我短语 slop 在这里是否有帮助吗?
    猜你喜欢
    • 2011-11-28
    • 2014-04-18
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多