我试图做一个布尔搜索'sname:'。$ user-> name。'或者sname:xxxxxx; ,我没有得到任何结果作为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;
}
高兴谢谢。
答案 0 :(得分:1)
$ user对象在某些地方不可用,因此它取决于您从哪里调用它。您需要全局调用它。将以下内容添加到代码顶部。
$keys = "";
global $user; //Add this line
$filters = 'sname:'.$user->name.' OR sname:xxxxxx';
另请注意,您在xxxxxx之后缺少一个右引号。我在上面的代码中添加了它。
答案 1 :(得分:0)
你有没有尝试删除第二个sname:??我的SOLR过滤器看起来像:
(fname:carrie OR carol)
AND
(lname:miller OR jones)