Warning: Undefined array key "HTTPS" in include() (line 29 of /opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php).
include('/opt/www/fdv2/drupal.stage/web/sites/default/settings.local.php') (Line: 4)
require('/opt/www/fdv2/drupal.stage/web/sites/drupal001.net/settings.php') (Line: 145)
Drupal\Core\Site\Settings::initialize('/opt/www/fdv2/drupal.stage/web', 'sites/drupal001.net', Object) (Line: 1099)
Drupal\Core\DrupalKernel->initializeSettings(Object) (Line: 701)
Drupal\Core\DrupalKernel->handle(Object) (Line: 19)
请问一下该怎样向ApacheSolr里面导入自定义数据? - Drupal大学 - Drupal问答论坛
首页 / 帖子
请问一下该怎样向ApacheSolr里面导入自定义数据?

大家好,我现在在schema.xml文件中添加了我想要的所有的字段,但是我该怎么将我的数据文件导进去呢,需要写模块吗?还是该怎么办。


-------补充提问------

我用的是drupal,现在就是我外部有一批数据,需要通过solr来建立索引,我已经在schema.xml文件中定义了这些字段,但是还需要在drupal模块中addField,我写了一个自定义模块

function customsolr_apachesolr_index_document_build(ApacheSolrDocument $document, $entity, $entity_type, $env_id) {
     $document->addField('address', $entity->address['und'][0]['value']);
}

但是好像没有用呢,写错了吗?


3个答案
YOYO
发布于:2014-08-18 15:24

如果你用的是Drupal,并且数据都是通过节点或Entity管理的,那么你使用Apache Solr模块,或者Search API Solr模块,都可以帮你建立和更新索引。


但如果你用的不是Drupal,或者你的数据不是通过Entity管理,那你需要使用Solr的API来建立和管理索引,你可以很容易的搜到PHP版本的Solr API示例代码。

YOYO
发布于:2014-08-18 16:29

我用的是drupal,现在就是我外部有一批数据,需要通过solr来建立索引,我已经在schema.xml文件中定义了这些字段,但是还需要在drupal模块中addField,我写了一个自定义模块

function customsolr_apachesolr_index_document_build(ApacheSolrDocument $document, $entity, $entity_type, $env_id) {

     $document->addField('address', $entity->address['und'][0]['value']);

}

但是好像没有用呢,写错了吗?

Amanda Song
发布于:2014-08-18 18:15

Drupal7没有搞过,Drupal6,你看看这个模块说明的那张图,

Apachesolr Custom Fields: https://www.drupal.org/project/apachesolr_custom_fields

大概参考了一下网上的文章,推荐你用这个hook看看:

function HOOK_apachesolr_update_index(&$document, $node, $namespace) {
  if ($node->type == 'story' && $document->entity == 'node') {
    $random_string = db_result(db_query('SELECT summary FROM {story_summaries} WHERE nid = %d', $node->nid));
    $document->ts_summary = $random_string;
  }
}
?>


---------------补充回答-------------------

如果没有node,有一种思路,就是新建一个content type,然后通过Apachesolr Custom Field来添加自定义的字段,就解决了自定义数据导入Solr的问题。