2011-09-26 17 views
1

我試圖通過評級使用搜索API分面搜索與Solr集成來對節點排序。我已經設置了五星級的評級(每個節點約9個,它是一個大型的多軸評級系統),但我無法對這些評級進行索引!搜索API Solr與五星(或類似的)評級系統集成(插值和排序)

有人可以幫我理解如何改變這個,所以我可以使用方面搜索評級?

否則,是否有其他模塊(除五星以外)的任何建議可以讓投票被索引?

謝謝!

賈斯汀

回答

1

首先你需要安裝facetapi模塊 - 這是方面。 第二,在hook_update_index,需要等級增加apachesolr指數

<?php function module_apachesolr_update_index(&$document, $node) { 
    //add additional offers; 
    if (count($node->field_add_offers)) { 
     $field = $node->field_add_offers; 
     foreach ($field as $lang => $values) { 
     foreach ($values as $value) { 
      if (isset($value['value'])) { 
      $document->setMultiValue('sm_offers', $value['value']); 
      } 
     } 
     } 
    } 
} ?> 

請注意,這只是一個例子。我運行了2個循環,因爲多語言網站和該字段數組中的「und」鍵存在問題。這裏你也不能添加所有的評級,但是可以計算出每個節點的一個修飾符,這將用於排序(如果你沒有評級)

第三,使用hook_facetapi_facet_info添加構面

<?php function module_facetapi_facet_info(array $searcher_info) { 
    return array(
    'sm_games_facet' => array(
     'name' => 'sm_games_facet', 
     'label' => t('games'), 
     'description' => t('Filter games'), 
     'field' => 'sm_games', 
     'field alias' => 'game', 
     'query type' => 'term', 
     'default widget' => 'facetapi_links', 
     'allowed operators' => array(FACETAPI_OPERATOR_OR => TRUE, FACETAPI_OPERATOR_AND => TRUE), 
     'default sorts' => array(
     array('display', SORT_ASC), 
    ), 
    ) 
); 
} ?> 

更多關於facet的信息可以在facetapi.api.php文件中找到;

第4 - 重新索引內容並啓用apachesolr設置的方面。

問候,斯拉瓦

+0

這也適用於Solar API與SOLR搜索?我沒有使用Apache搜索集成。但我想這可能會影響或阻礙我決定走這條路。 – stopshinal

+0

mhmh,apachesolr - 這是模塊的名稱,它提供了與Drupal的solr集成。它也提供schema.xmk和solrconfig,所以drupal可以和Solr通信。 這不是apache搜索,它只是以這種方式調用。 – 32i

+0

https://www.drupal.org/project/apachesolr與https://www.drupal.org/project/search_api_solr。這是drupal中的兩個不同的模塊,所以我認爲它不會工作。 – zsd