欢迎各位兄弟 发布技术文章
这里的技术是共享的
1) /node-admin/13320 里面有schema.xml 一定要用这个 schema.xml 有大用
4) /node-admin/13304 在最后部分, admin/config/search/apachesolr/settings 发觉到 连不上 solr服务器
前面几点 里面涉及到的该启用的模块要启用 比如 Search Facets, Facet API(即facet) 模块
4) 打开 tomcat 页面,看看 solr服务器,可能会涉及 403, http://ip:8983 见 /node-admin/17054
5) 发觉 solr 无法启动,,可能是由于查 catalina.out (/usr/local/tomcat/logs/catalina.out) 日志,可能是由于
查 catalina.out 日志 ,有可能还发现的错 , 见 /node-admin/17056 解决办法
我们重启下 (停止下,再启动下)
sudo -u tomcat /usr/local/tomcat/bin/shutdown.sh #停止下
sudo -u tomcat /usr/local/tomcat/bin/startup.sh #启动下
6)启动后 回到 3),看看能不能连 solr 服务器,由下图,连上了solr 服务器
7) 看看下面 关于分词
8) 通过搜索发现 某人没有访问权限仍然搜到结果
9) 使用 hook_apachesolr_process_results 是不行的,因为它只能改变 results, 不能 改变 totals 总数,还是会出现分页
//function custom_one_apachesolr_process_results(&$results, $query){
// $e = kprint_r($results,TRUE);
// print $e;
// $e = kprint_r($query,TRUE);
// print $e;
// foreach($results as $key=>$value){
// if($value['entity_type'] == 'node' && !user_access('view any '.$value['bundle'].' content')){
// unset($results[$key]);
// }
// }
//}
要使用 hook_apachesolr_query_alter
function custom_one_apachesolr_query_alter(DrupalSolrQueryInterface $query) {
$content_types = array_keys(node_type_get_types());//得到所有内容类型
foreach($content_types as $key=>$value){
if(!user_access('view any '.$value.' content')){ //没有访问此内容类型的权限,就把它从搜索中移除
$query->addFilter('bundle', $value, TRUE);
}
}
//下面代码其实是有作用的
//下是几行是排除某一个 id ,的搜索
// $nid = 11022;
// $exclude = TRUE;
// $filter = apachesolr_site_hash() . '/node/' . $nid;
// $query->addFilter('id', $filter, $exclude);
//下面代码其实是有作用的
//下面是 可以实现 某一个 分类 taxonomy term 的搜索
// $query->addFilter('tid', 16);
}