2 Stimmen

wie indiziert man ein cck-Feld vom Typ Textbereich in Solr: drupal6

Ich habe ein cck-File des Typs textarea mit Namen abgeheftet_desc Wie kann ich dieses Feld in Solr indizieren?

Ich habe diesen Artikel gefunden http://acquia.com/blog/understanding-apachesolr-cck-api Ich habe es versucht, aber die Datei wird nicht indiziert, kann mir jemand helfen?

    <?php
// $Id$
/**
* Implementation of hook_apachesolr_cck_fields_alter
*/
function example_apachesolr_cck_fields_alter(&$mappings) {
  // either for all CCK of a given field_type and widget option
  // 'filefield' is here the CCK field_type. Correlates to $field['field_type']
  $mappings['text'] = array(
    'text_textarea' => array('callback' => 'example_callback', 'index_type' => 'string'),

  );

}

/**
* A function that gets called during indexing.
* @node The current node being indexed
* @fieldname The current field being indexed
*
* @return an array of arrays. Each inner array is a value, and must be
* keyed 'value' => $value
*/
function example_callback($node, $fieldname) {
  $fields = array();
  foreach ($node->$fieldname as $field) {
    // In this case we are indexing the filemime type. While this technically
    // makes it possible that we could search for nodes based on the mime type
    // of their file fields, the real purpose is to have facet blocks during
    // searching.
    $fields[] = array('value' => $field['field_desc']);
  }
  return $fields;
}

?>

1voto

haxney Punkte 3138

Ich arbeite gerade daran, dies in einer netten, hübschen, generischen Art und Weise hinzuzufügen. Wenn Sie das jetzt wirklich brauchen, schauen Sie sich Folgendes an dieses Thema auf Drupal.org. Mein Code befindet sich derzeit unter GitHub Ich hoffe jedoch, dass ich es in den Upstream einbinden und veröffentlichen kann.

Ich hoffe, das hilft!

0voto

joetsuihk Punkte 536

Die Zuordnung pro Feld ist leichter zu kontrollieren.

Funktion ändern:

$mappings['per-field']['field_specialities'] = array(
  'index_type' => 'string',
  'callback' => 'ge_search_apachesolr_field_specialities_callback'
);

Rückruf:

function ge_search_apachesolr_field_specialities_callback($node, $fieldname)
{
  $fields = array();
  foreach($node->$fieldname as $field) {
    $fields[] = array('value' => $field['value']);
  }
  return $fields;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X