Apache Solr and Drupal Default's Search

Jun
01

This is my first official Trellon blog post! It's been a good first few weeks. I have had a chance to work on some exciting projects. One of which involved using the awesome ApacheSolr Drupal Module which adds support for much better search performance and faceted search.

Find the ApacheSolr Search

Maybe it's just me, but I had the hardest time finding out how to search via the ApacheSolr module. I could see on the administration pages that the content was all indexed, and I had added the appropriate blocks, but every time I searched the site, it was just the normal results with no facets!

After reading some issues that alluded to this path search/apachesolr_search, it hit me that the ApacheSolr search is a different page (it appears as a separate Search tab on the search page). This is due to how the core Drupal search works and how it gets extended. I did waste a fair amount of time trying to realize this very fundamental task, so I started a ticket asking for more clarity in the documentation.

How To Integrate Your Search Form

One issue that comes up from ApacheSolr being a separate search page is that the search form does not go to it by default. This is the $search_box in the page.tpl.php template. The way we change this behavior is to add a new submission handler to that form. You can create a custom module for this or put it in your custom theme.

<?php
/**
* Implementation of hook_form_alter()
*/
function custommodule_form_alter(&$form, $form_state, $form_id) {
 
// Add submission handler to redirect to apachesolr
 
if ($form_id == 'search_theme_form') {
   
// Add a submit, because the search form redirects to a specific place
   
$form['#submit'][] = 'custommodule_search_submit';
  }
}

/**
* Implementation of form submit function
*/
function custommodule_search_submit($form, &$form_state) {
 
// Get form ID
 
$form_id = $form['form_id']['#value'];
 
// Create new redirect
 
$form_state['redirect'] = 'search/apachesolr_search/'. trim($form_state['values'][$form_id]);
}
?>

If we break this down.

  • The first function is just a simple implementation of hook_form_alter which allows you to hook into forms and change them around (alter them).
  • The contents of that function contain a conditional to look for the specific form. This was found by looking at the form's output (HTML) and looking for the form ID element's value.
  • Then it adds a submission handler (the name of a function). Reference the FAPI Quickstart for more information.
  • The next step is to define the submission handler function we pointed our form to. This is the second function you will see, and it is basically the same thing as the original handler you will find in the search module.
  • The only thing to do in this function is to set a redirect for the form to the new ApachSolr page. Note that the original submission handler of this function will be performed as well, but prior to this one.

And voila! When you search through the Search Box, it will redirect you to the ApacheSolr search. It may be beneficial to point out that this will not change other searching locations, including the default search found at the search page.

This content can also be referenced at this issue: http://drupal.org/node/326375#comment-1643362

6 Comments

thanks

thanks

thanks

thanks

I was studying something else

I was studying something else about this on another blog. Interesting. Your linear perspective on it is diametrically opposed to what I read in the first place begin with. I am still contemplating over the opposite points of view, but I'm inclined to a great extent toward yours. And no matter, that's what is so superb about advanced democracy and the marketplace of ideas on-line.

Sohbet
ev arkadaşı
muhabbet

How To Integrate My Search

How To Integrate My Search Form?

Viewers are not included in

Viewers are not included in TV ratings as they are much less likely to watch commercials than live viewers.
Regards,
Watch Series

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options