一、下载apache-solr-3.4.0.zip,解压缩,配置apache-solr-3.4.0.war到tomcat目录:
<Context path="/solr" docBase="E:\code\apache-solr-3.4.0.war" debug="0" reloadable="false">
<Environment name="solr/home" type="java.lang.String" value="E:\data" override="true" />
</Context>
二、配置E:\data目录:
a、solr.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores" defaultCoreName="core0">
<core name="core0" instanceDir="core0" />
</cores>
</solr>
b、新建core0\conf目录:
c、schema.xml:
<?xml version="1.0" ?>
<schema name="core0" version="1.1">
<types>
<fieldType name="int" class="solr.IntField" omitNorms="true"/>
//新版本不建议使用。建议使用。其中老版本中pint不支持范围查询,请使用tint
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="text_general" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory
"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<!--in this , we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>-->
<filter class="solr.StandardFilterFactory"/>
<!--<filter class="solr.RemoveDuplicatesTokenFil
terFactory"/>-->
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory
"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StandardFilterFactory"/>
<!--<filter class="solr.RemoveDuplicatesTokenFil
terFactory"/>-->
</analyzer>
</fieldType>
</types>
<fields>
<!-- general -->
<field name="id"
type="int"
indexed="true"
stored="true"
multiValued="false" required="true"/>
<field name="name"
type="text_general"
indexed="true"
stored="false"
multiValued="false" />
<field name="content" type="text_general"
indexed="true"
stored="false"
multiValued="false" />
</fields>
<!-- field to use to determine and enforce document uniqueness. -->
<uniqueKey>id</uniqueKey>
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>content</defaultSearchField>
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>
<copyField source="name" dest="content"/>
</schema>
d、solrconfig.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!--
This is a stripped down config file used for a simple example...
It is *not* a good example to work from.
-->
<config>
<luceneMatchVersion>LUCENE_34</luceneMatchVersion>
<!--
The DirectoryFactory to use for indexes.
solr.StandardDirectoryFactory
, the default, is filesystem based.
solr.RAMDirectoryFactory is memory based, not persistent, and doesn't work with replication. -->
<directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory
}"/>
<updateHandler class="solr.DirectUpdateHandler2" >
<autoCommit>
<maxDocs>1000</maxDocs>
<maxTime>240000</maxTime>
</autoCommit>
</updateHandler>
<requestDispatcher handleSelect="true" >
<requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB
="2048" />
</requestDispatcher>
<requestHandler name="standard" class="solr.StandardRequestHandler" default="true" />
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
<requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
<!-- config for the admin interface -->
<admin>
<defaultQuery>*:*</defaultQuery>
</admin>
</config>
e:stopwords.txt、synonyms.txt暂时使用默认压缩包里的文件。
三、启动tomcat
通过http://localhost:8080/solr 访问solr管理台。设置URIEncoding="UTF-8",否则通过管理台输入类似:
content:"中国人" ,后台接受数据会乱码。
四、使用solrj访问solr服务:
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>3.4.0</version>
</dependency>
也可以直接使用标签org.apache.solr.client.solrj.beans.Field绑定model,直接add model即可。
public class SolrTest {
private static SolrServer server;
@BeforeClass
public static void init() throws MalformedURLException {
String url = "http://192.168.0.75:9090/solr/";
server = new CommonsHttpSolrServer(url);
// 提升性能采用流输出方式
server.setRequestWriter(new BinaryRequestWriter());
}
@Test
public void testAdd() throws Exception {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", new Integer(1));
doc.addField("name", "测试标题");
doc.addField("content", "123");
server.add(doc);
server.commit();
}
@Test
public void testQuery() throws Exception {
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.setStart(0);
query.setRows(25);
//如果要高亮显示,则必须stored=true
query.addHighlightField("content");
query.setHighlightSimplePre("<font color='red'>");
query.setHighlightSimplePost("</font>");
QueryResponse rsp = server.query(query);
SolrDocumentList docs = rsp.getResults();
System.out.println("qtime :" + rsp.getQTime());
for (SolrDocument doc : docs) {
System.out.println("-----");
System.out.println(doc.getFieldValue("id"));
}
}
}
<Context path="/solr" docBase="E:\code\apache-solr-3.4.0.war" debug="0" reloadable="false">
</Context>
二、配置E:\data目录:
a、solr.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
</solr>
b、新建core0\conf目录:
c、schema.xml:
<?xml version="1.0" ?>
<schema name="core0" version="1.1">
//新版本不建议使用。建议使用。其中老版本中pint不支持范围查询,请使用tint
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
</schema>
d、solrconfig.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!--
-->
<config>
</config>
e:stopwords.txt、synonyms.txt暂时使用默认压缩包里的文件。
三、启动tomcat
通过http://localhost:8080/solr 访问solr管理台。设置URIEncoding="UTF-8",否则通过管理台输入类似:
content:"中国人" ,后台接受数据会乱码。
四、使用solrj访问solr服务:
<dependency>
</dependency>
也可以直接使用标签org.apache.solr.client.solrj.beans.Field绑定model,直接add model即可。
public class SolrTest {
}