Make the $results array that comes back from a search more useful.

robertDouglass - November 4, 2009 - 11:27
Project:Apache Solr Search Integration
Version:5.x-2.x-dev
Component:Code
Category:bug report
Priority:normal
Assigned:Unassigned
Status:patch (to be ported)
Description

In particular I used modify_query to add a field to the $params['fl'] and was disappointed that the field wasn't automatically available to me in the search results. It was, in fact, available, but only through the badly named 'node' element of the array which contained the Apache_Solr_Document. I could have used the $result['node']->getField('blah'); method but imo this assumes too much knowledge of the phpclient library.

To make it easier to deal with this patch does two things.

1. renames 'node' to 'document'. Note that this creates some mismatch between the array and the theme layer. If it causes problems we have to address the theme layer.

2. iterates over the Apache_Solr_Document and makes an array of its fields called $result['fields'] for easy access.

AttachmentSize
results.patch1 KB

#1

robertDouglass - November 4, 2009 - 11:38

Here's a version without renaming node->document. A little less disruptive.

AttachmentSize
results.patch 879 bytes

#2

robertDouglass - November 4, 2009 - 12:31
Version:6.x-2.x-dev» 6.x-1.x-dev

Committed to DRUPAL-6--2. Marking to be ported.

#3

robertDouglass - November 6, 2009 - 10:52
Status:needs review» patch (to be ported)

#4

claudiu.cristea - November 6, 2009 - 15:38
Version:6.x-1.x-dev» 5.x-2.x-dev

Here's a patch for 5.x-2.x-dev.

Note that I've also moved the comment count generation ($extra[] = format_plural($doc->comment_count, '1 comment', '@count comments');) above drupal_alter('apachesolr_search_result', $doc); (as is in 6.x-2.x-dev) so modules can alter also that value. I think this should also be fixed in 6.x-1.x-dev.

AttachmentSize
apachesolr-623046-D5.patch 2.3 KB

#5

robertDouglass - November 7, 2009 - 14:29

Claudiu - better not to mix up two things in one patch. Can you start a new issue with the shuffling of the $extra and drupal_alter?

 
 

Drupal is a registered trademark of Dries Buytaert.