solr学习笔记,
solr使用指南
http://blog.csdn.net/liuzhenwen/article/details/4060922
SOLR技术文档
1. 了解lucene 原理,全文搜索概念,参考(http://wishlife.iteye.com/category/30179
) .建立自己的索引库.
2. 了解solr参考(http://www.ibm.com/developerworks/cn/java/j-solr1/
, http://www.ibm.com/developerworks/cn/java/j-solr2/
).并下载实例程序.
3. 搭建SOLR服务器
3.1 官方下载 apache-solr-1.3.0.zip 和tomcat5.5
3.2 将apache-solr-1.3.0\example\webapps\solr.war部署有 tomcat 下
3.4 将apache-solr-1.3.0\example\solr 下所有文件复制到e:/tomcat/solr下
3.5 启动 tomcat -> 浏览http://localhost:8080/solr/admin/ 能访问Solr Admin 页面说明Solr 服务器设置成功.
admin 18385 108 27.9 5798376 4589936 ? Sl Apr19 8625:44 /home/dist/sys/java/bin/java -Djava.util.logging.config.file=/solr/conf/logging.properties -server -Xms4g -Xmx4g -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn1600m -XX:+UseCompressedOops -Djava.awt.headless=true -Dsolr.solr.home=/duitang/data/solr -Dorg.apache.lucene.FSDirectory.class=org.apache.lucene.store.NIOFSDirectory -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/solr/endorsed -classpath /solr/bin/bootstrap.jar -Dcatalina.base=/solr -Dcatalina.home=/solr -Djava.io.tmpdir=/solr/temp org.apache.catalina.startup.Bootstrap start
4. 为Solr 创建索引库
4.1 在 e:/tomcat/solr 目录下新建名为data 的文件夹,再在data 下新建index名为 文件夹
4.2 将lucene 创建好的索引放入e:/tomcat/solr/data/index 下
5. Solr 索引设置
5.1 在e:/tomcat/solr /conf 下solrconfig.xml, schema.xml
<?xml version="1.0" ?>
<schema name="metasearch" version="1.1">
<types>
<!-- not analyzed-->
<fieldType name="string" class="solr.StrField"
sortMissingLast="true" omitNorms="true" />
<!--
Numeric field types that manipulate the value into a string value
that isn't human-readable in its internal form, but with a
lexicographic ordering the same as the numeric ordering, so that
range queries work correctly.
-->
<fieldType name="boolean" class="solr.BoolField"
sortMissingLast="true" omitNorms="true" />
<fieldType name="sint" class="solr.SortableIntField"
sortMissingLast="true" omitNorms="true" />
<fieldType name="slong" class="solr.SortableLongField"
sortMissingLast="true" omitNorms="true" />
<fieldType name="sfloat" class="solr.SortableFloatField"
sortMissingLast="true" omitNorms="true" />
<fieldType name="sdouble" class="solr.SortableDoubleField"
sortMissingLast="true" omitNorms="true" />
<!--
The format for this date field is of the form 1995-12-31T23:59:59Z
-->
<fieldType name="date" class="solr.DateField"
sortMissingLast="true" omitNorms="true" />
<!--//todo 确定多长的文本需要compress-->
<fieldType name="text" class="solr.TextField"
positionIncrementGap="100" compressThreshold="1000">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.WordDelimiterFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
</types>
<fields>
<field name="id" type="slong" indexed="true" stored="true" required="true" />
<field name="username" type="text" indexed="true" stored="false" required="true" />
<field name="first_name" type="text" indexed="true" stored="false" required="false" />
<field name="last_name" type="text" indexed="true" stored="false" required="false"/>
<field name="city" type="text" indexed="true" stored="false" required="false"/>
<field name="signature" type="text" indexed="true" stored="false" required="false"/>
<field name="text" type="text" indexed="true" stored="false" multiValued="true" />
</fields>
<uniqueKey>id</uniqueKey>
<!--
field for the QueryParser to use when an explicit fieldname is absent
-->
<defaultSearchField>text</defaultSearchField>
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="AND" />
<copyField source="username" dest="text" />
<copyField source="first_name" dest="text" />
<copyField source="last_name" dest="text" />
<copyField source="city" dest="text" />
<copyField source="signature" dest="text" />
</schema>
主从配置:
master:
<?xml version="1.0" encoding="UTF-8" ?>
<config>
<requestHandler name="/replication" class="solr.ReplicationHandler">
<lst name="master">
<str name="replicateAfter">commit</str>
<str name="confFiles">schema.xml,solrconfig_slave.xml:solrconfig.xml</str>
<str name="commitReserveDuration">00:01:00</str>
</lst>
</requestHandler>
<indexDefaults>
<lockType>simple</lockType>
<unlockOnStartup>true</unlockOnStartup>
</indexDefaults>
<luceneMatchVersion>LUCENE_CURRENT</luceneMatchVersion>
<mainIndex>
<useCompoundFile>false</useCompoundFile>
<mergeFactor>50</mergeFactor>
<maxBufferedDocs>1000</maxBufferedDocs>
<ramBufferSizeMB>64</ramBufferSizeMB>
<reopenReaders>true</reopenReaders>
<maxFieldLength>2000</maxFieldLength>
</mainIndex>
<deletionPolicy class="solr.SolrDeletionPolicy">
<str name="maxCommitsToKeep">1</str>
<str name="maxOptimizedCommitsToKeep">0</str>
<str name="maxCommitAge">8MINUTES</str>
</deletionPolicy>
<updateHandler class="solr.DirectUpdateHandler2">
<autoCommit>
<maxDocs>2000</maxDocs>
<maxTime>300000</maxTime>
</autoCommit>
</updateHandler>
<requestDispatcher handleSelect="true">
<requestParsers enableRemoteStreaming="false"
multipartUploadLimitInKB="2048" />
</requestDispatcher>
<requestHandler name="standard" class="solr.StandardRequestHandler"
default="true">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="fl">*</str>
<str name="version">2.2</str>
</lst>
</requestHandler>
<requestHandler name="/update" class="solr.XmlUpdateRequestHandler" />
<requestHandler name="/admin/"
class="org.apache.solr.handler.admin.AdminHandlers" />
<!-- ping/healthcheck -->
<requestHandler name="/admin/ping" class="PingRequestHandler">
<lst name="defaults">
<str name="qt">standard</str>
<str name="q">solrpingquery</str>
<str name="echoParams">all</str>
</lst>
</requestHandler>
<!-- config for the admin interface -->
<admin>
<defaultQuery>solr</defaultQuery>
</admin>
<query>
<queryResultCache class="solr.LRUCache" size="512"
initialSize="512" autowarmCount="512" />
<filterCache class="solr.LRUCache" size="512"
initialSize="512" autowarmCount="512" />
<queryResultWindowSize>32</queryResultWindowSize>
<queryResultMaxDocsCached>256</queryResultMaxDocsCached>
<useFilterForSortedQuery>true</useFilterForSortedQuery>
</query>
</config>