2014-03-19 103 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