标签为 "apache" 的存档

solr学习初步

目前的项目需要solr支持,在同事的帮助下将环境配置好,程序可以跑起来了。但是solr是什么还不知道呢,要学习的东西真是多啊,回来搜搜看看,先引用一点别人的介绍吧。

Solr是一个基于Lucene java库的企业级搜索服务器,包含XML/HTTP,JSON API, 高亮查询结果,faceted search(不知道该如何翻译,片段式搜索),缓存,复制还有一个WEB管理界面。Solr运行在Servlet容器中。所以Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr是Lucene面向企业搜索应用的扩展。

Solr是一个拥有象WebService一样接口的独立运行的搜索服务器。你将能够通过HTTP协议以XML格式将文档放入搜索服务器(这个过程叫做索引),你能够通过HTTP协议的GET来查询搜索服务器并且得到XML格式的结果。Solr的特性包括:

1.高级的全文搜索功能
2.专为高通量的网络流量进行的优化
3.基于开放接口(XML和HTTP)的标准
4.综合的HTML管理界面
5.可伸缩性-能够有效地复制到另外一个Solr搜索服务器
6.使用XML配置达到灵活性和适配性
7.可扩展的插件体系

Solr使用Lucene并且扩展了它:

一个真正的拥有动态域(Dynamic Field)和唯一键(Unique Key)的数据模式(Data Schema)
对Lucene查询语言的强大扩展!
支持对结果进行动态的分组和过滤
高级的,可配置的文本分析
高度可配置和可扩展的缓存机制
性能优化
支持通过XML进行外部配置
拥有一个管理界面
可监控的日志
支持高速增量式更新(Fast incremental Updates)和快照发布(Snapshot Distribution)

Schema(模式)

定义域类型和文档的域
能够驱动智能处理
声明式的Lucene分析器规范
动态域能够随时增加域
拷贝域功能允许对一个域进行多种方式的索引,或者将多个域联合成一个可搜索的域
显式类型能够减少对域类型的猜测
能够使用外部的基于文件的终止词列表,同义词列表和保护词列表的配置

查询

拥有可配置响应格式(XML/XSLT,JSON,Python,Ruby)的HTTP接口
高亮的上下文搜索结果
基于域值和显式查询的片段式搜索(Faceted Search)
对查询语言增加了排序规范
常量的打分范围(Constant scoring range)和前缀式查询-没有idf,coord,或者lengthNorm因子,对查询匹配的词没有数量限制
函数查询(Function Query)-通过关于一个域的数值或顺序的函数对打分进行影响
性能优化

核心

可插拔的查询句柄(Query Handler)和可扩展的XML数据格式
使用唯一键的域能够增强文档唯一性
能够高效地进行批量更新和删除
用户可配置的文档索引变化触发器(命令)
并发控制的搜索器
能够正确处理数字类型,从而能够进行排序和范围搜索
能够控制缺失排序域的文档
支持搜索结果的动态分组

缓存

可配置的查询结果,过滤器,和文档缓存实例
可插拔的缓存实现
后台缓存热启:当一个新的搜索器被打开时,可配置的搜索将它热启,避免第一个结果慢下来,当热启时,当前搜索器处理目前的请求(???)。
后台自动热启:当前搜索器缓存中最常访问的项目在新的搜索器中再次生成,能够在索引器和搜索器变化的时候高速缓存常查询的结果
快速和小的过滤器实现
支持自动热启的用户级别的缓存

复制

能够将使用rsync传输时改变的索引部分有效的发布
使用拉策略(Pull Strategy)来简化增加搜索器
可配置的发布间隔能够允许对时间线和缓存使用进行权衡选择

管理接口

能够对缓存使用,更新和查询进行综合统计
文本分析调试器,能够显示每个分析器每个阶段的结果
基于WEB的查询和调试输出:解析查询输出,Lucene的explain方法细节,能够解释为何某个文档打分低,被排除在结果中等等

上面贴了这么多,不过还是没什么概念,慢慢一步步来吧,呵呵。

配置apache虚拟目录

配置apache虚拟目录本来是件很简单的事情,可是却遇到了一系列的问题,先说下如何设置吧–

打开apache配置文件,找到模块,在其内添加

Alias /study "E:/学习/"

其中/study是虚拟目录,E:/学习/为物理路径

接着在后面添加


AllowOverride None
Options None
Order allow,deny
Allow from all


保存配置文件重新启动apache

这里就遇到了一个问题,由于物理路径使用的是中文,修改了配置文件后,apache无法启动,网上查了下,需要修改文件编码,可以使用类似UEStudio等文本编辑软件将apache配置文件另存为UTF-8编码格式,这次再启动apache成功。

写了个简单的php文件测试,使用到数组函数,浏览器访问出错,以为编码问题,另存为UTF-8格式,问题依旧

include_path='.;C:\php5\pear'

错误提示可能不同,但一般包含这个提示

问题的关键是测试文件中并不包含require、include等调用,中文的目录还真是问题多,查找了半天也没找到适合的解决方法,于是将中文目录改为英文

Alias /study "E:/study/"

AllowOverride None
Options None
Order allow,deny
Allow from all


浏览器访问测试文件,一切正常。

使用apache的htaccess实现域名跳转

实现域名的统一,即使得itcao.com转向www.itcao.com,据说对于seo也有些好处,代码

RewriteEngine on
RewriteCond %{HTTP_HOST} ^itcao.com [NC]
RewriteRule ^(.*)$ http://www.itcao.com/$1 [L,R=301]

还可以利用apache的重定向功能实现url的跳转,例如

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.abc.com [NC]
RewriteRule ^(.*)$ http://www.itcao.com/$1 [L,R=301]

windows下为apache启用mod_rewrite模块

windows下安装apache默认是没有开启mod_rewrite模块的,启用也很简单,修改apache配置文件httpd.conf,将#LoadModule rewrite_module modules/mod_rewrite.so这一行前面的#号去掉,改为LoadModule rewrite_module modules/mod_rewrite.so

为了测试mod_rewrite模块是否启用成功,可以采用一个简单的例子测试一下.

在htdocs下新建.htaccess文件,可以打开记事本另存-所有文件,文件名为.htaccess,在windows下直接改名是无法改成.htaccess文件的,在文件中输入:

RewriteEngine On
RewriteBase /
RewriteRule ^(.+)$ index.html

然后都浏览器localhost/后随便输入abc,然后回车,是不是显示It works!

需要注意的是,我们这里是在根目录下使用.htaccess,如果我们的网站在子目录中,虽然我们有.htaccess文件,同时也启用apache的mod_rewrite模块,但是我们依然会遇到无法找到页面错误,原因在哪里呢?

还是httpd.conf文件,找到<Directory “D:/Apache2.2/htdocs”>,就是文档根目录,根据安装位置不同会有所不同,将AllowOverride None改为AllowOverride All,其实文件注释里说的很明白的

AllowOverride controls what directives may be placed in .htaccess files.
It can be “All”, “None”, or any combination of the keywords:
  Options FileInfo AuthConfig Limit

至此,重启apache后子目录也可以使用.htaccess实现url重写了.

为apache添加phpmyadmin

前面文章已经搭建好了apache+php+mysql环境,本文添加phpmyadmin,方便的数据库连接管理程序.

下载phpmyadmin3.1.3

下载多语言支持的压缩包,解压至apache下htdocs目录下,目录名改为phpmyadmin,就是去掉后面版本什么的,太长了,也可自由更改为其它名称.

进入phpmyadmin目录,将config.sample.inc.php文件复制一份,改名为config.inc.php,然后打开文件,修改这一行$cfg['blowfish_secret'] = ”;在引号中间随便输入写字符,这里输入localhost,就变成$cfg['blowfish_secret'] = ‘localhost’;保存文件.

浏览器访问http://localhost/phpmyadmin/,输入用户名和密码登录.

Windows下搭建apache2.2.11和php5.2.9和mysql5.1.33环境

首先下载相应软件

Apache2.2.11

php5.2.9

mysql5.1.33

为了安装方便这里都下载的是安装包,也可以下载压缩包手动配置.

先来安装apache,主要就是自定义一下目录,本文安装到d:\apache2.2下,如果没有出错的话,安装完成后,apache会自动运行,桌面右下角可看到绿色的小箭头,无法启动会对话框提示,可能是之前安装过apache,原来的配置文件导致出错.

接下来安装mysql,路径设置为d:\mysql,最后完成时设置用户名名及密码,这里可以在mysql官方网站下载mysql GUI Tools,方便数据库操作.

最后安装php,先前的版本可能需要手动配置apache的httpd.conf文件,安装php5.2.9时会提示选择apache配置文件目录,安装程序会自动在httpd.conf文件末尾添加如下内容:

#BEGIN PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL
ScriptAlias /php/ “D:/PHP/”
Action application/x-httpd-php “D:/PHP/php-cgi.exe”
PHPIniDir “D:/PHP/”
LoadModule php5_module “D:/PHP/php5apache2_2.dll”
PHPIniDir “D:/PHP/”
LoadModule php5_module “D:/PHP/php5apache2.dll”
PHPIniDir “D:/PHP/”
LoadModule php5_module “D:/PHP/php5apache.dll”
#END PHP INSTALLER EDITS – REMOVE ONLY ON UNINSTALL

本文php安装在d:\php下,故这里的路径会根据你安装位置不同而不同.

这时我们重启apache会提示错误,原因就是上面的文件,我们需要注释掉重复的PHPIniDir “D:/PHP/” 只保留一行,前面添加#或者删除都可.这时apache正常启动.

测试一下php环境,在apache的htdocs目录下建立文件test.php,内容输入<?php phpinfo(); ?>

到浏览器访问一下看看是否ok.