【发布时间】:2014-04-25 04:52:41
【问题描述】:
- 假设用户输入一个双字输入进行搜索,因为应用的默认布尔值是 OR,所有包含所有或两个条目的条目都会出现。 我有兴趣知道的是,是否可以提升专门满足 AND 条件的条件。
- 如果有多个词,是否可以指定词来暗示搜索时的特定约束,或者在这些词存在的情况下提升几个参数。例如:如果输入是“带 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 和所有候选人。
我无法弄清楚问题可能是什么,或者我是否可以提供更个性化的提升。
【问题讨论】: