I’m trying to replace the default search with a LIKE clause in Drupal 7. I tried to alter the query according to Adding an OR condition to an existing query:
function MYMODULE_query_node_access_alter(QueryAlterableInterface $query) { foreach ($query->getTables() as $table) { // LIKE for search results. if ($table['table'] == 'search_index') { // Get the query args and then the search term $args =& $query->getArguments(); $search = $args[':db_condition_placeholder_1']; // Get a reference to the existing query conditions. $conditions =& $query->conditions(); // Save the former conditions $former_conditions = $conditions; // Reset the condition array. It needs a default #conjunction for which AND is fine $conditions = array('#conjunction' => array_shift($former_conditions)); // Replace the search condition in the query foreach ($former_conditions as $key => $condition) { if ($key != 1) { $query->condition($condition['field'], $condition['value'], $condition['operator']); } else { $query->condition('i.word', '%' . db_like($search) . '%', 'LIKE'); } } } } }
Searching with the word “declaration” displays the same results as the default drupal search, but searching with “decl” doesn’t find any results.
Any ideas why my code isn’t working?