2014-03-19 54 views
0
  1. 假设用户输入一个双字输入用于搜索,因为应用的默认布尔值为OR,所有包含全部或两个条目的条目出现。 我有兴趣知道的是,如果条件特别符合“与”条件可以得到提升。
  2. 如果有多个单词,可以指定单词来暗示搜索中的特定约束,或者在出现这些单词时增强几个参数。例如:如果输入是“带有x和没有z的y”,我可以让我的solr将其解释为(x AND y)AND(not z)?或者至少提升部分或全部符合要求的条目?

编辑: 我一直在使用与edismax升压尝试如下所示:如何在solr查询中提升AND?

$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,然后所有的候选人。

我无法弄清楚问题可能出在哪里,或者我是否可以提供更加定制的提升。

回答

0

如果您使用的是eDismax,您可以获得一个完整的词组集合,包括一个词组,一个单独的提升查询等等。阅读the wiki page并进行实验。您不需要为此场景进行任何自定义编码。

+0

感谢您的回复。我仍在学习各种强化方法。但没有实际的例子,很难与他们联系。你能告诉我,这句话可能对你有帮助吗? – abhilashLenka