1

我坚持使用新的本地安装的 solr。每件事都正常工作,直到某一点。

我可以毫无问题地访问 solr 的管理员:http://localhost:8983/solr/admin/

但是当我索引我的mysql内容时,我抛出了错误:

更新请求不成功。响应代码 0。(空)

没有别的了。我到处看了看,但我真的不知道问题出在哪里。

任何想法 ?

以下是关于我尝试索引的一些信息:

我的 schema.xml 中的字段:

<field name="pl_album_id" type="string" indexed="true" stored="true" required="true" />
   <field name="pl_album_num_id" type="int" indexed="true" stored="true" required="true" />
   <field name="pl_album_title" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_album_number" type="int" indexed="true" stored="true"/>
   <field name="pl_album_keywords" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_album_summary" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_album_general_mark" type="int" indexed="true" stored="true"/>
   <field name="pl_album_authors" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_album_signer_id" type="int" indexed="true" stored="true" multiValued="true"/>
   <field name="pl_album_format" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_album_is_complete" type="int" indexed="true" stored="true"/>
   <field name="pl_album_status_id" type="int" indexed="true" stored="true"/>
   <field name="pl_album_sort_status_id" type="int" indexed="true" stored="true"/>
   <field name="pl_album_is_online" type="int" indexed="true" stored="true"/>
   <field name="pl_album_review_created_at" type="date" indexed="true" stored="true"/>
   <field name="pl_album_review_year" type="int" indexed="true" stored="true"/>
   <field name="pl_series_id" type="int" indexed="true" stored="true"/>
   <field name="pl_series_title" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_series_title_copy_for_sorting" type="string" indexed="true" stored="true"/>
   <field name="pl_series_prefix" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_series_type_id" type="int" indexed="true" stored="true"/>
   <field name="pl_series_origin_id" type="int" indexed="true" stored="true"/>
   <field name="pl_series_genre_id" type="int" indexed="true" stored="true" multiValued="true"/>
   <field name="pl_series_genres" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_series_targeted_public_id" type="int" indexed="true" stored="true" multiValued="true"/>
   <field name="pl_collection_id" type="int" indexed="true" stored="true"/>
   <field name="pl_collection_label" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_publisher_id" type="int" indexed="true" stored="true"/>
   <field name="pl_publisher_name" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_published_at" type="date" indexed="true" stored="true"/>
   <field name="pl_visit_counter" type="int" indexed="true" stored="true"/>
   <field name="pl_user_id" type="int" indexed="true" stored="true"/>
   <field name="pl_user_first_name" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_user_last_name" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_cycle_type_id" type="int" indexed="true" stored="true"/>
   <field name="pl_cycle_title" type="text_general_fr" indexed="true" stored="true"/>
   <field name="pl_cycle_number" type="int" indexed="true" stored="true"/>

我用那个函数索引它们:

public function solrIndex($AlbumId = null)
    {
      $album = new Album();
      $album_list = $album->getForSolrIndex($AlbumId);

      $options = array
      (
          'hostname' => sfConfig::get('plconfig_solr_hostname'),
          'port'     => sfConfig::get('plconfig_solr_port')
      );
      $solr_client = new SolrClient($options);

      foreach($album_list as $album_details)
      {
        $solr_client->deleteByQuery("pl_album_num_id:".$album_details['id']);
      }
      $solr_client->commit();

      foreach($album_list as $album_details)
      {
        $doc = new SolrInputDocument();

        $doc->addField('pl_album_id', $album_details['id']);
        $doc->addField('pl_album_num_id', $album_details['id']);
        $doc->addField('pl_album_title', $album_details['title']);
        if($album_details['number'])
        {
          $doc->addField('pl_album_number', $album_details['number']);
        }
        $doc->addField('pl_album_keywords', $album_details['keywords']);
        $doc->addField('pl_album_summary', $album_details['summary']);
        if($album_details['general_mark'])
        {
          $doc->addField('pl_album_general_mark', $album_details['general_mark']);
        }
        $doc->addField('pl_album_authors', $album_details['authors']);
        $doc->addField('pl_album_is_complete', $album_details['album_is_complete'] ? $album_details['album_is_complete'] : 0);
        $doc->addField('pl_album_status_id', $album_details['status_id'] ? $album_details['status_id'] : 0);
        $sort_status_id = 8;
        if($album_details['status_id'] == Album::TO_REREAD)
        {
          $sort_status_id = 1;
        }
        if($album_details['status_id'] == Album::TO_IMPROVE)
        {
          $sort_status_id = 2;
        }
        if($album_details['status_id'] == Album::TO_REVIEW)
        {
          $sort_status_id = 3;
        }
        if($album_details['status_id'] == Album::TO_RECEIVE)
        {
          $sort_status_id = 4;
        }
        if($album_details['status_id'] == Album::ONLINE)
        {
          $sort_status_id = 5;
        }
        if($album_details['status_id'] == Album::ABANDON_BY_PUBLISHER)
        {
          $sort_status_id = 6;
        }
        if($album_details['status_id'] == Album::ABANDON_BY_PLANETEBD)
        {
          $sort_status_id = 7;
        }
        $doc->addField('pl_album_sort_status_id', $sort_status_id);
        $doc->addField('pl_album_format', $album_details['format']);
        $doc->addField('pl_album_is_online', $album_details['is_online'] ? $album_details['is_online'] : 0);
        if($album_details['album_review_created_at'])
        {
          $doc->addField('pl_album_review_created_at', date('Y-m-d\TH:i:s\Z', strtotime($album_details['album_review_created_at'])));
          $doc->addField('pl_album_review_year', date('Y', strtotime($album_details['album_review_created_at'])));
        }
        $doc->addField('pl_series_id', $album_details['series_id']);
        $doc->addField('pl_series_title', $album_details['series_title']);
        $doc->addField('pl_series_title_copy_for_sorting', $album_details['series_title']);
        $doc->addField('pl_series_prefix', $album_details['series_prefix']);
        if($album_details['type_id'])
        {
          $doc->addField('pl_series_type_id', $album_details['type_id']);
        }
        $doc->addField('pl_series_genres', $album_details['series_genres']);
        $doc->addField('pl_series_origin_id', $album_details['series_origin_id'] ? $album_details['series_origin_id'] : 0);
        $doc->addField('pl_collection_id', $album_details['collection_id'] ? $album_details['collection_id'] : 0);
        $doc->addField('pl_collection_label', $album_details['label']);
        $doc->addField('pl_publisher_id', $album_details['publisher_id']);
        $doc->addField('pl_publisher_name', $album_details['name']);
        if($album_details['published_at'])
        {
          $doc->addField('pl_published_at', $album_details['published_at'].'T00:00:00Z');
        }
        $doc->addField('pl_visit_counter', $album_details['visit_counter'] ? $album_details['visit_counter'] : 0);
        $doc->addField('pl_user_id', $album_details['user_id'] ? $album_details['user_id'] : 0);
        $doc->addField('pl_user_first_name', $album_details['user_first_name']);
        $doc->addField('pl_user_last_name', $album_details['user_last_name']);
        $doc->addField('pl_cycle_type_id', $album_details['cycle_type_id'] ? $album_details['cycle_type_id'] : 0);
        $doc->addField('pl_cycle_title', $album_details['cycle_title']);
        $doc->addField('pl_cycle_number', $album_details['cycle_number'] ? $album_details['cycle_number'] : 0);

        foreach($album_details['signers'] as $signer_id) {
          $doc->addField('pl_album_signer_id', $signer_id);
        }

        foreach($album_details['genres'] as $genre_id) {
          $doc->addField('pl_series_genre_id', $genre_id);
        }

        foreach($album_details['targeted_public'] as $targeted_public_id) {
          $doc->addField('pl_series_targeted_public_id', $targeted_public_id);
        }        

        $updateResponse = $solr_client->addDocument($doc);
      }
      $solr_client->commit();

      return count($album_list);
    }
4

1 回答 1

0

您使用的是什么 Solr 版本?是solr4吗?您是否已在架构中定义?

于 2012-11-13T14:43:04.967 回答