solr6.2.1配置

 

一:第一次接触这方面的东西,感谢如下的博客主指引我方向

http://blog.csdn.net/linzhiqiang0316/article/details/51460574

http://blog.csdn.net/frankcheng5143/article/details/52292897

http://www.cnblogs.com/langfanyun/p/5829874.html

二:环境与软件

1,win10 64bit 

2,jdk 8   http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

3,tomcat 8    http://tomcat.apache.org/download-80.cgi

4,solr 6.2.1    http://www.apache.org/dyn/closer.lua/lucene/solr/6.2.1

三:安装

1,jdk,tomcat的安装配置

    http://blog.csdn.net/msn465780/article/details/46118757

2,solr的配置

    a,因为solr内置了jetty服务器所以我们可以直接启动

        在solr的解压目录中添加一个start.bat文件并添加如下内容

        bin/solr.cmd start -f
        pause

        双击启动,然后再浏览器中输入localhost:8983/solr

启动成功

b,第二种模式从tomcat启动

    1,将solr-6.2.1\server\solr-webapp中的webapp拷贝到tomcat的webapps目录下并将webapp重命名为solr(可以重命名为取任意名称)。

    2,将solr-6.2.1\server\lib\ext中的jar包拷贝到tomcat\webapps\solr\WEB-INF\lib目录下

    3,将solr-6.0.0\server\resources下的log4j.properties配置文件拷贝到tomcat\webapps\solr\WEB-INF\classes,如果WEB-INF下没有classes文件那么        就创建一个classes文件夹。

    4,在tomcat\webapps\solr下新建一个文件solrhome(文件夹名称可以任意命名),将solr-6.2.1\server\solr下的所有文件拷贝到刚刚创建的文件夹下

    5,修改tomcat\webapps\solr\WEB-INF下的web.xml,找到如下代码:

    <env-entry>  

        <env-entry-name>solr/home</env-entry-name>  

        <env-entry-value>/put/your/solr/home/here</env-entry-value>  

        <env-entry-type>java.lang.String</env-entry-type>  

     </env-entry>  

默认是注解掉,放开注解,并将<env-entry-value>中的值修改为刚刚步骤7中的solrhome目录,如:E:\project\Search\apache-tomcat-8.0.33\webapps\solr\solrhome

6,运行tomcat,运行成功后访问:http://localhost:8080/solr/index.html

配置成功

四,core配置

1,将solr-6.2.1\example\example-DIH\solr木目录下的solr文件夹拷贝到tomcat\webapps\solr\solrhome文件夹下并删除solr文件夹下的core.properties(该文件在创建core时会自动生成,保留会容易导致core创建不成功)

2,打开浏览器输入http://localhost:8982/solr/index.html

3,colr配置文件的改写请查看

http://www.cnblogs.com/langfanyun/p/5829874.html

写的很详细.注意是managed-schema 而不是schema.xml 

五:solr mysql 导入数据

1,将Java mysql 的驱动jar拷贝到tomcat\webapps\solr\WEB-INF\lib目录下

2,编辑tomcat\webapps\solr\solrhome\test\conf下的solr-data-config.xml文件内容如下

<dataSource type="JdbcDataSource"   
            driver="com.mysql.jdbc.Driver"   
            url="jdbc:mysql://192.168.0.199:3306/solr?characterEncoding=utf-8&amp;autoReconnect=true"   
            user="root"   
            password="root"/>   
<document>   
      <entity name="test" query="SELECT id,name,des,title FROM test">  
      <field column="id"          name="id" />  
      <field column="name"        name="name" />
      <field column="des"        name="des" />
      <field column="title"        name="title" />   
      </entity>   
</document>

    注意,mysql下有这个库,这个表,并有对应的字段

3,编辑tomcat\webapps\solr\solrhome\test\conf下的solrconfig.xml文件添加如下内容

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
  <lst name="defaults">
    <str name="config">solr-data-config.xml</str>
  </lst>
</requestHandler>

4,编辑tomcat\webapps\solr\solrhome\test\conf下的managed-schema文件

<!--字段定义-->
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="_root_" type="string" indexed="true" stored="false"/>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="name" type="string" indexed="true" stored="true"/>
<field name="title" type="string" indexed="true" stored="true"/>
<field name="des" type="text_ik" indexed="true" stored="true"/>
<field name="text_ik" type="text_ik" indexed="false" stored="false" multiValued="true"/>
<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>

<uniqueKey>id</uniqueKey>

<!--拷贝字段便于检索-->
<copyField source="name" dest="text_ik"/>
<copyField source="title" dest="text_ik"/>

<!--数据类型定义-->
<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
<fieldType name="binary" class="solr.BinaryField"/>
<fieldType name="random" class="solr.RandomSortField" indexed="true"/>
<!-- 空格分词器 -->
<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    </analyzer>
</fieldType>

<!-- 普通的文本 fieldType
     StandardTokenizer, 移除"stopwords.txt"中指定的词(忽略大小写)
-->
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

默认文件中有很多的fieldType可以放在哪儿不用删除

5,导入数据

六:中文分词

http://blog.csdn.net/linzhiqiang0316/article/details/51554217

七:solrj

1,添加maven依赖

<dependency>
    <groupId>org.apache.solr</groupId>
    <artifactId>solr-solrj</artifactId>
    <version>6.2.1</version>
</dependency>

2,测试代码

public class SolrServer {
    String baseURL = "http://localhost:8982/solr/test";
    HttpSolrClient solrServer = new HttpSolrClient(baseURL);
    private HttpSolrClient getHttpSolrClient(){
        return new HttpSolrClient(baseURL);
    }
    public void get(String name) throws IOException, SolrServerException {
        HttpSolrClient solrServer = getHttpSolrClient();
        solrServer.setSoTimeout(5000);
        SolrQuery query = new SolrQuery();
        //query.setQuery("*:*"); //查询所有
        query.setQuery(name+"*");
        query.setRows(1000);
        query.setStart(0);

        QueryResponse response = solrServer.query(query, SolrRequest.METHOD.POST);
        SolrDocumentList list = response.getResults();
        System.err.println(list.getNumFound());   //总页数
        System.err.println(JSON.toJSONString(list));
    }

    public void getOne() throws IOException, SolrServerException {
        solrServer.setSoTimeout(5000);
        SolrQuery prams = new SolrQuery();
        prams.set("q","*:*");

        QueryResponse query = solrServer.query(prams, SolrRequest.METHOD.POST);
        SolrDocumentList list = query.getResults();
        System.err.println(JSON.toJSONString(list));
        for (SolrDocument document : list){
            Collection<String> fieldNames = document.getFieldNames();
            for (String field : fieldNames){
                System.err.println(document.get(field));
            }
        }
    }

    public void add(String id,String name) throws IOException, SolrServerException {
        SolrInputDocument doc = new SolrInputDocument();
        doc.setField("id",id);
        doc.setField("title",name);
        doc.setField("description","这是我的测试!!!");
        solrServer.add(doc);
        solrServer.commit();
    }

    public void update(String id,String name) throws IOException, SolrServerException {
        SolrInputDocument doc = new SolrInputDocument();
        doc.setField("id",id);
        doc.setField("name",name);
        doc.setField("description","这是我的测试!!!");
        solrServer.add(doc);
        solrServer.commit();
    }

    public void delete(String id) throws IOException, SolrServerException {
        solrServer.deleteById(id);
        solrServer.commit();
    }

    public void deleteAll() throws IOException, SolrServerException {
        solrServer.deleteByQuery("*:*");
        solrServer.commit();
    }
}

    

solr 集群配置https://my.oschina.net/u/2289011/blog/778671

转载于:https://my.oschina.net/u/2289011/blog/761302

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值