读书人

Solr 的装配配置

发布时间: 2012-08-07 14:54:47 作者: rapoo

Solr 的安装配置
最近研究solr 结合网上的方法 自己实践
版本apache-solr-1.4.1.tgz
java容器用的自带的jetty
简单快速方法
解压后 进入example java -jar start.sh
后台运行输出
java -jar /usr/local/webserver/solr/example/start.jar >>/tmp/solr.log 2>&1 &
访问 http://localhost:8983 如果打不开 检查端口是否打开

具体配置以后再研究 下面研究solr的配置

现在新建一个通讯录 搜索 采用多核心 即一个目录
进入solr 目录 发现 有data conf 等目录

新建一个contact 将 data conf 移进去

在外面新建 solr.xml

<?xml version="1.0" encoding="UTF-8" ?><!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.  You may obtain a copy of the License at     http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.--><!-- All (relative) paths are relative to the installation path    persistent: Save changes made via the API to this file  sharedLib: path to a lib directory that will be shared across all cores--><solr persistent="false">  <!--  adminPath: RequestHandler path to manage cores.      If 'null' (or absent), cores will not be manageable via request handler  -->  <cores adminPath="/admin/cores">    <core name="contact" instanceDir="contact" />  </cores></solr>

之后重启 发现solr 下生成data
进入contact 目录修改 solrconfig.xml
找到 dataDir 注掉 <dataDir>${solr.data.dir:./solr/data}</dataDir>

重要的配置文件是 conf 下的 solrconfig.xml 和 schema.xml
下面是我的配置 详情见
http://blog.csdn.net/escaflone/article/details/5720597
http://blog.csdn.net/escaflone/article/details/5726320
sorconfig.xml
<?xml version="1.0" encoding="UTF-8" ?><config>  <updateHandler />  <requestDispatcher handleSelect="true" >    <requestParsers enableRemoteStreaming="false" multipartUploadLimitInKB="2048" />  </requestDispatcher>    <requestHandler name="standard" default="true" />  <requestHandler name="/update" />  <requestHandler name="/admin/" />  <requestHandler name="/admin/ping" name="code"><?xml version="1.0" encoding="UTF-8" ?><schema name="contact" version="1.2">  <types>    <fieldType name="string" sortMissingLast="true" omitNorms="true"/>    <!-- boolean type: "true" or "false" -->    <fieldType name="boolean" sortMissingLast="true" omitNorms="true"/>    <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->    <fieldtype name="binary" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="float" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="long" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="double" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="tint" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="tfloat" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="tlong" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="tdouble" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>    <fieldType name="date" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>    <!-- A Trie based date field for faster date range queries and date faceting. -->    <fieldType name="tdate" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>    <!--    -->    <fieldType name="pint" omitNorms="true"/>    <fieldType name="plong" omitNorms="true"/>    <fieldType name="pfloat" omitNorms="true"/>    <fieldType name="pdouble" omitNorms="true"/>    <fieldType name="pdate" sortMissingLast="true" omitNorms="true"/>    <!--    -->    <fieldType name="sint" sortMissingLast="true" omitNorms="true"/>    <fieldType name="slong" sortMissingLast="true" omitNorms="true"/>    <fieldType name="sfloat" sortMissingLast="true" omitNorms="true"/>    <fieldType name="sdouble" sortMissingLast="true" omitNorms="true"/>    <fieldType name="random" indexed="true" />    <!-- A text field that only splits on whitespace for exact matching of words -->    <fieldType name="text_ws" positionIncrementGap="100">      <analyzer>        <tokenizer or "wi fi" could match a document containing "Wi-Fi".        Synonyms and stopwords are customized by external files, and stemming is enabled.        -->    <fieldType name="text" positionIncrementGap="100">      <analyzer type="index">        <tokenizer generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>        <filter language="English" protected="protwords.txt"/>      </analyzer>      <analyzer type="query">        <tokenizer synonyms="synonyms.txt" ignoreCase="true" expand="true"/>        <filter generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>        <filter language="English" protected="protwords.txt"/>      </analyzer>    </fieldType>    <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,         but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->    <fieldType name="textTight" positionIncrementGap="100" >      <analyzer>        <tokenizer synonyms="synonyms.txt" ignoreCase="true" expand="false"/>        <filter ignoreCase="true" words="stopwords.txt"/>        <filter generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>        <filter language="English" protected="protwords.txt"/>        <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes             possible with WordDelimiterFilter in conjuncton with stemming. -->        <filter positionIncrementGap="100">      <analyzer type="index">        <tokenizer ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />        <filter generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>        <filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/>        <filter generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>        <filter positionIncrementGap="100">      <analyzer type="index">        <tokenizer ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />        <filter generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>        <filter withOriginal="true"           maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>      </analyzer>      <analyzer type="query">        <tokenizer synonyms="synonyms.txt" ignoreCase="true" expand="true"/>        <filter generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/>        <filter sortMissingLast="true" omitNorms="true">      <analyzer>        <!-- KeywordTokenizer does no actual tokenizing, so the entire             input string is preserved as a single token          -->        <tokenizer />        <!-- The TrimFilter removes any leading or trailing whitespace -->        <filter />        <!-- The PatternReplaceFilter gives you the flexibility to use             Java Regular expression to replace any sequence of characters             matching a pattern with an arbitrary replacement string,              which may include back references to portions of the original             string matched by the pattern.                          See the Java Regular Expression documentation for more             information on pattern and replacement string syntax.                          http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/package-summary.html          -->        <filter replacement="" replace="all"        />      </analyzer>    </fieldType>        <fieldtype name="phonetic" stored="false" indexed="true" >      <analyzer>        <tokenizer inject="false"/>      </analyzer>    </fieldtype>    <fieldtype name="payloads" stored="false" indexed="true" >      <analyzer>        <tokenizer encoder="float"/>      </analyzer>    </fieldtype>    <!-- lowercases the entire field value, keeping it as a single token.  -->    <fieldType name="lowercase" positionIncrementGap="100">      <analyzer>        <tokenizer />      </analyzer>    </fieldType>    <!-- since fields of this type are by default not stored or indexed,         any data added to them will be ignored outright.  -->     <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" />  </types> <fields>   <field name="id" type="int" indexed="true" stored="true" required="true"/>    <field name="uid" type="int" indexed="true" stored="true" required="true"/>    <field name="contactid" type="int" indexed="true" stored="true" required="true"/>    <field name="email" type="text" indexed="true" stored="true" required="true"/>    <field name="cellphone" type="text" indexed="true" stored="true" required="true"/>    <field name="contact" type="text" indexed="true" stored="true"/>   <field name="source" type="int" indexed="true" stored="true"/>   <field name="time" type="int" indexed="true" stored="true" required="true"/>    <field name="text" type="text" indexed="true" stored="true" multiValued="true"/> </fields> <uniqueKey>id</uniqueKey><solrQueryParser defaultOperator="OR"/> <defaultSearchField>text</defaultSearchField> <copyField source="contact" dest="text"/> <copyField source="email" dest="text"/> <copyField source="cellphone" dest="text"/></schema>

读书人网 >开源软件

热点推荐