标签归档:solr

建立多个solr应用

通过观察本博客的其他文章,应该已经会做出一个简单的基于solr的搜索引擎了。但是,现实中,我们往往一个java服务器会服务于多个搜索的应用。

这个时候,我们应该怎么做呀?

也许你会说,solr的schema.xml中多配置一些字段,然后靠其中的一个type字段来区分不就可以了。这样当然是一种方法。但是,如果你是一个网站的所有者,你想你的数据的索引和其他网站的索引放到一起么?答案是否定的。这个时候我们就要思考一下了?

仔细观察就会发现,一个solr的服务主要由两个部分组成,一个对外的web入口,然后一个solr home,而这两者之间的关联,我们已经靠web.xml来实现了。并且用的是绝对路径。这也就意味着,我们的solr home可以写到服务器的任意位置。当然有个前提条件该目录下的data目录可写,因为要往里边写索引文件。再看前边的web入口,实际上他就是一个servlet应用,我们可以基于端口,或者基于application来实现将其分离开。分析完这些问题,我们应该就有解决方案了。

目前有两种基于端口,和基于应用程序。

我们可以让tomcat多监听几个端口,每个端口下放一个solr对外的入口。然后其中配置solr home到两个不同的目录。但是这样也许会有一个问题,也是作者目前遇到的问题。现实中一台服务器中运行着apache和tomcat。apache的端口已经够让人头疼了,还是不要让tomcat来掺火了。

所以我们选择第二种方案。

基于前几篇文章的配置方法。

将/var/lib/tomcat6/下的solr(前几篇文章已经提到如何实现),复制一下,比如说名字是test。

将其中目录下的conf下的solrconfig.xml中的${solr.data.dir:./solr/data},这一行换成
${solr.data.dir:./test/data}

然后将/var/lib/tomcat6/webapps/solr.war,复制一份,比如说名字是test.war。

然后,cd 到test中将其中的web.xml中的solr home 配置到/var/lib/tomcat6/test/

然后重新启动一下tomcat,访问一下http://127.0.0.1:8080/test/就出现一个一模一样的管理界面了。

tomcat限制IP访问

有的时候,你的tomcat需要只允许某个IP访问,比如以前说的solr,默认的应该是只允许特定的服务器访问的,否则整个接口都对外暴露出来就挂掉了。

其实设置方法很简单:

编辑tomcat6/conf/下的server.xml,在其中的engine中加入几行:

<Valve className=”org.apache.catalina.valves.RemoteAddrValve” deny=”192.168.1.*”/>

还有一种对域名的限制:

<Valve className=”org.apache.catalina.valves.RemoteHostValve” allow=”*.mycompany.com,*.a.com”/>

Solr初级入门(二)

第一部分简单介绍了一下solr的简单配置,可以搜索信息了。看到管理页面以后在其中输入查询的信息,就可以以搜索引擎的方式查询信息了。

对于文档的操作,我们可以用solr-php-client来搞,下载地址是:http://code.google.com/p/solr-php-client/ 。下载完成以后有相关的文档介绍,在这里只介绍简单的使用。

下载下来的zip包中会有一个叫做Apache的主文件夹,该文件夹中存放的就是操作文档的API。核心类是Apache/Solr/Service.php,

我们来看一段实例代码:

 <a href="http://istrone.com/?p=143#more-143" class="more-link">继续阅读 <span class="meta-nav">&rarr;</span></a>