这是我的一些初始设置和配置学习信息,也许可以帮助某人启动它并更快地运行。
首先在Windows上进行设置。
下载并解压缩Apache Tomcat和Solr,然后将其复制到您的工作文件夹中。
Tomcat设置
如果要将tomcat作为服务使用以下方法进行安装:
bin \ service.bat安装
在conf。下编辑tomcat用户:
<role rolename="admin"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="admin,manager-gui"/>
如果要使用HTTP-GET使用国际字符(> 127)查询Solr,则必须通过接受百分比编码的UTF-8将Tomcat配置为符合URI标准。 添加:URIEncoding ='UTF-8'
<connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443"
URIEncoding="UTF-8" />
到conf / server.xml
将example \ solr的内容复制到solr主目录D:\ Java \ apache-solr-3.6.0 \ home
在$ CATALINA_HOME / conf / Catalina / localhost / solr.xml上创建指向您的Solr主目录的代码片段。
<?xml version="1.0" encoding="UTF-8"?>
<context docBase="D:\Java\apache-tomcat-7.0.27\webapps\solr.war" debug="0" crossContext="true" ><environment name="solr/home" type="java.lang.String" value="D:\Java\apache-solr-3.6.0\home" override="true" />
</Context>
启动tomcat,登录,部署solr.war。
Solr设置
它应该在http:// localhost:8080 / solr / admin /上可用。要使用SolrJ创建快速测试,创建并读取数据:抓取以下Maven库:
<dependency><groupid>org.apache.solr</groupId><artifactid>apache-solr-solrj</artifactId><version>3.6.0</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.apache.httpcomponents</groupId><artifactid>httpclient</artifactId><version>4.1</version><scope>compile</scope></dependency><dependency><groupid>org.apache.httpcomponents</groupId><artifactid>httpcore</artifactId><version>4.1</version><scope>compile</scope></dependency><dependency><groupid>org.apache.james</groupId><artifactid>apache-mime4j</artifactId><version>0.6.1</version><scope>compile</scope></dependency><dependency><groupid>org.apache.httpcomponents</groupId><artifactid>httpmime</artifactId><version>4.1</version><scope>compile</scope></dependency><dependency><groupid>org.slf4j</groupId><artifactid>slf4j-api</artifactId><version>1.6.1</version><scope>compile</scope></dependency><dependency><groupid>commons-logging</groupId><artifactid>commons-logging</artifactId><version>1.1.1</version><scope>compile</scope></dependency><dependency><groupid>junit</groupId><artifactid>junit</artifactId><version>4.9</version><scope>test</scope></dependency>
JUnit测试:
package za.co.discovery.ecs.solr.test;import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Collection;import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;@RunWith(JUnit4.class)
public class TestSolr {private SolrServer server;/*** setup.*/@Beforepublic void setup() {server = new HttpSolrServer("http://localhost:8080/solr/");try {server.deleteByQuery("*:*");} catch (SolrServerException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** Test Adding.** @throws MalformedURLException error*/@Testpublic void testAdding() throws MalformedURLException {try {final SolrInputDocument doc1 = new SolrInputDocument();doc1.addField("id", "id1", 1.0f);doc1.addField("name", "doc1", 1.0f);doc1.addField("price", 10);final SolrInputDocument doc2 = new SolrInputDocument();doc2.addField("id", "id2", 1.0f);doc2.addField("name", "doc2", 1.0f);doc2.addField("price", 20);final Collection<solrinputdocument> docs = new ArrayList<solrinputdocument>();docs.add(doc1);docs.add(doc2);server.add(docs);server.commit();final SolrQuery query = new SolrQuery();query.setQuery("*:*");query.addSortField("price", SolrQuery.ORDER.asc);final QueryResponse rsp = server.query(query);final SolrDocumentList solrDocumentList = rsp.getResults();for (final SolrDocument doc : solrDocumentList) {final String name = (String) doc.getFieldValue("name");final String id = (String) doc.getFieldValue("id"); //id is the uniqueKey fieldSystem.out.println("Name:" + name + " id:" + id);}} catch (SolrServerException e) {e.printStackTrace();Assert.fail(e.getMessage());} catch (IOException e) {e.printStackTrace();Assert.fail(e.getMessage());}}}
直接从数据库添加数据
首先,您需要将相关的数据库库添加到添加的类路径中。 然后按如下所示创建data-config.xml,如果需要自定义字段,则可以在dataconfig.xml下方显示的schema.xml中的fields标记下指定这些字段 。
<dataconfig><datasource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@localhost:1525:DB" user="user" password="pass"/><document name="products"><entity name="item" query="select * from demo"><field column="ID" name="id" /><field column="DEMO" name="demo" /><entity name="feature" query="select description from feature where item_id='${item.ID}'"><field name="features" column="description" /></entity><entity name="item_category" query="select CATEGORY_ID from item_category where item_id='${item.ID}'"><entity name="category" query="select description from category where id = '${item_category.CATEGORY_ID}'"><field column="description" name="cat" /></entity></entity></entity></document>
</dataConfig>
schema.xml中的一个自定义字段:
<fields><field name="DEMO" type="string" indexed="true" stored="true" required="true" />
</fields
添加到solrconfig.xml中,确保指向data-config.xml,处理程序必须在solrconfig.xml中注册,如下所示
<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"><lst name="defaults"><str name="config">data-config.xml</str></lst>
</requestHandler>
完成所有设置后,可以使用以下操作完成完全导入:
http:// localhost:8080 / solr / admin / dataimport?command = full-import
这样一来,您就可以快速进行闪电般的数据检索了。
参考: Zen上的 JCG合作伙伴 Brian Du Preez在IT博客上通过Tomcat在Apache上设置和使用Apache Solr 。
翻译自: https://www.javacodegeeks.com/2012/10/setting-up-and-playing-with-apache-solr.html