как сделать логический поиск в Apache Solr - PullRequest
1 голос
/ 02 ноября 2009

Я пытался выполнить логический поиск 'sname:'. $ User-> name. ' ИЛИ имя: хххххх; , я не получаю никаких результатов, где sname: xxxxxx; работает отлично. я даже добавил mm = 1 с помощью крюка изменения запроса. Может ли кто-нибудь направить меня, как я могу это сделать.

Вот мой код .....

$keys = "";
$filters = 'sname:'.$user->name.' OR sname:xxxxxx;
//print($filters);
$solrsort = variable_get('apachesolr_search_taxonomy_sort', 'created desc');
$page = isset($_GET['page']) ? $_GET['page'] : 0;
$_GET['retain-filters'] = 1;

try {
//stolen from search.module (search_data)
$data = apachesolr_search_execute($keys, $filters, $solrsort, 'search/apachesolr_search', $page);
$results = theme('search_results', $data, $type);
} catch (Exception $e){
watchdog('apachesolr', t('Error running search'));
}

function reports_apachesolr_modify_query(&$query, &$params, $caller) {
// I only want to see articles by the admin!
$params['mm'] = 1;
}

Adv спасибо.

Ответы [ 2 ]

1 голос
/ 02 ноября 2009

Объект $ user в некоторых местах недоступен, поэтому зависит от того, откуда вы его вызываете. Вы должны вызвать это глобально. Добавьте следующее в начало вашего кода.

$keys = "";
global $user; //Add this line
$filters = 'sname:'.$user->name.' OR sname:xxxxxx';

Также обратите внимание, что после xxxxxx вам не хватает закрывающей кавычки. Я добавил это в коде выше.

0 голосов
/ 08 июля 2011

Вы пытались удалить второе имя: ?? Мои фильтры SOLR выглядят так:

(fname:carrie OR carol) 
AND
(lname:miller OR jones)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...