工具:

  1. jdk8.0(solr6.1.0必须装jdk8.0,开始装的7.0最后卸了)下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html

  2. solr6.1.0 http://www.apache.org/dyn/closer.lua/lucene/solr/6.1.0

  3. tomact (我下的8.5)http://tomcat.apache.org/

步骤:

  1.先安装jdk,保证在cmd ,输入javac能运行(自行百度);

  2.再安装tomcat保证localhost:8080能正常访问(自行百度)

  3.

   a.解压solr。把solr/server/solr-webapp文件夹下的webapp目录复制拷贝到Tomcat/webapps文件夹内并            重命名webapp目录名为solr

         b.把solr/server/lib/ext中的jar包复制到Tomcat/webapps/solr/WEB-INF/lib目录中。

        c.在任意盘符新建solr_home文件夹(我在D盘创建)。把solr/server/solr目录复制到solr_home下。这个目录         也就是后面你创建索引实例Core需要用到的目录。配置文件(schema.xml)和索引都保存在这里。

       d.把solr/server/resources下的log4j.properties复制到Tomcat/webapps/solr/WEB-INF/classes目录内。           如 。果classes不存在手动创建。

      f.配置web.xml。打开Tomcat/webapps/solr/WEB-INF下的web.xml。找到如下配置内容

    


       solr/home
       /put/your/solr/home/here
       java.lang.String
 

 放开注释,并修改env-entry-value为你的solr_home地址。我的地址是d:/solr_home/solr

 OK。保存。顺便重启下tomcat。然后在浏览器输入http://localhost:8080/solr/index.html。 刚开始我配置完后直接输入http://localhost:8080/solr 回车提示404. 4.x部署这样是能打开的,5.x必须输入到index.html。 出solr Admin UI则说明你的搞定了

4.添加core

在tomcat/solrhome/目录下创建core1(自定义), 在其目录下创建data文件夹,并将tomcat7/solrhome/configsets/basic_configs/目录下的conf文件夹复制到core1下。然后在solr控制台点击Add Core


name:给core随便起个名字

instanceDir:core的安装目录,这里就是之前在tomcat/solrhome/目录下创建的core1文件夹

dataDir:指定用于存放lucene索引和log日志文件的目录路径,该路径是相对于core根目录(在单core模式下,就直接是相对于solr_home了),默认值是当前core目录下的data。

config:用于指定solrconfig.xml配置文件的文件名,启动时会去core1/config目录下去查找。

schema:即用来配置你的schema.xml配置文件的文件名的,schema.xml配置文件应该存放在当前core目录下的conf目录下。但是下载的solr里没有这个文件,所以我也不管了。

属性都填上,然后点击Add Core,就创建完成了。

5.代码我用的php,用的Tp,我把下载的php-solr-client放在Tp的vendor下,当然会报类找不到的错,自己一个个引入吧!

 vendor('Solr.Service');
// 连接solr服务器
$solr = new \Apache_Solr_Service('127.0.0.1', '8080', '/solr/core1');

//测试是否联通
if (!$solr->ping()) {
    echo 'Solr service not responding.';
    exit;
}

上面实例化的第三个参数是你建的core的名字

   $data = array(
            array(
                'id' => 'EN80922032',
                'name' => '男士打磨直筒休闲牛仔裤',
                'brand' => 'ENERGIE',
                'cat' => '牛仔裤',
                'price' => '1870.00'
            ),
            array(
                'id' => 'EN70906025',
                'name' => '品牌LOGO翻领拉链外套',
                'brand' => 'ENERGIE',
                'cat' => '外套',
                'price' => '1680.00'
            ),
        );

//添加索引数据
        $documents = array();
        foreach($data as $key => $value) {
            $part =new \Apache_Solr_Document();
            foreach($value as $key2 =>$value2) {
                $part->$key2 =$value2;
            }

            $documents[] = $part;
        }

        $solr->addDocuments( $documents );
        $solr->commit();
        $solr->optimize();

这段代码,百度一下基本都是这个例子;但自己跑就可能失败,

  •  没建立索引,添加对应的字段前,先建字段,可以通过配置文件,也可以通过那个后台,我用的solr6.0所以后台可以直接add filed 。

  • commit()的时候失败了,找了下原因是说solr-php-clien的版本不支持,所以提交不了,没办法,我换了一个(好像是commit的时候那个$rowPost的参数为空,我也不知道为啥,知道的告诉我)。

  • optimize失败。虽然optimize方法执行失败,但通过solr admin可以查到数据,也就是数据执行了。解释说这个方法有点像硬盘上整理磁盘碎片的操作。为了提高搜索速度。所以直接注释了算了。

  • ok了终于能运行成功了。