solrj使用demo

 solr服务器类PersonSolrServer.java:

import java.net.MalformedURLException;  
import java.util.ArrayList;
import java.util.List;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
import org.apache.solr.client.solrj.impl.CommonsHttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;
import org.nstcrm.person.model.PersonDetail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
*
@author Sam 时间:2011-9-16 下午3:25:15
*/
public class PersonSolrServer {

private final static String URL = "http://localhost/solr/person";
private Logger logger = LoggerFactory.getLogger(this.getClass());
private final static Integer SOCKE_TTIMEOUT = 1000; // socket read timeout
private final static Integer CONN_TIMEOUT = 100;
private final static Integer MAXCONN_DEFAULT = 100;
private final static Integer MAXCONN_TOTAL = 100;
private final static Integer MAXRETRIES = 1;
private CommonsHttpSolrServer server = null;
private final static String ASC = "asc";

public PersonSolrServer() throws MalformedURLException {
System.out.println("初始化solr服务..");
server = new CommonsHttpSolrServer( URL );//使用HTTPClient 和solr服务器进行通信
server.setRequestWriter(new BinaryRequestWriter());//使用流输出方式
server.setSoTimeout(SOCKE_TTIMEOUT);// socket read timeout
server.setConnectionTimeout(CONN_TIMEOUT);
server.setDefaultMaxConnectionsPerHost(MAXCONN_DEFAULT);
server.setMaxTotalConnections(MAXCONN_TOTAL);
server.setFollowRedirects(false);
server.setAllowCompression(true);
server.setMaxRetries(MAXRETRIES); // defaults to 0. > 1 not recommended.
}

/**
* 创建索引
*/
public void createIndex(PersonDetail pd) throws Exception {
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", pd.getId());
doc.addField("language", pd.getLanguage());

server.add(doc);
server.optimize();
server.commit();
System.out.println("----索引创建完毕!!!");
}
/**
* 删除索引
*
@author Sam 时间:2011-9-16 下午3:32:55
*
@throws Exception
*/
public void delIndex() throws Exception {
server.deleteByQuery("*:*");
server.commit();
System.out.println("----索引清除完毕!!!");
}

/**
* 查询
*
@author Sam 时间:2011-9-16 下午3:33:14
*
@param key
*
@param startPage
*
@param pageSize
*
@throws Exception
*/
public List<Integer> queryList(String key, Integer start, Integer rows) throws Exception {
SolrQuery query = new SolrQuery(getkey(key));
query.setHighlight(true); //开启高亮组件
query.addHighlightField("id");
query.addHighlightField("chName");//高亮字段
query.addHighlightField("enName");
query.setHighlightSimplePre("<font color='red'>");//前缀
query.setHighlightSimplePost("</font>");//后缀
query.set("hl.usePhraseHighlighter", true);
query.set("hl.highlightMultiTerm", true);
query.set("hl.snippets", 3);//三个片段,默认是1
query.set("hl.fragsize", 50);//每个片段50个字,默认是100
query.setStart(start); //起始位置 …分页
query.setRows(rows);//文档数

QueryResponse rep = server.query(query);
List<SolrDocument> docs = rep.getResults();//得到结果集
List<Integer> idList = new ArrayList<Integer>();
for(SolrDocument doc : docs) {
idList.add(Integer.parseInt((String) doc.getFieldValue("id")));
System.out.println(doc.getFieldValue("chName") + "|" + doc.getFieldValue("enName"));
}
return idList;
}

public String getkey(String strWord) {
if(strWord.indexOf(" ") > 0 ){
String wordAnd = strWord.replace(" ", "* AND *");
String wordOr = strWord.replace(" ", "* *");
String rt = "(*" + wordAnd + "*) *" + wordOr + "* " + strWord;
return rt;
} else {
return "*" + strWord + "* " + strWord;
}

}

public CommonsHttpSolrServer getServer() {
return server;
}

public void setServer(CommonsHttpSolrServer server) {
this.server = server;
}

}

配置文件E:\SolrHome\solr\person\conf\data-config.xml:

<dataConfig>   
<dataSource
type="JdbcDataSource"
driver
="com.mysql.jdbc.Driver"
url
="jdbc:mysql://localhost:3306/nstcrm"
user
="root"
password
="admin"/>
<document name="pm_person">
<entity name="person" pk="id" query="select * from pm_person">
<field column="id" name="id"/>
<field column="code" name="code"/>
<field column="chName" name="chName"/>
<field column="enName" name="enName"/>
<field column="nickName" name="nickName"/>
<field column="birthdate" name="birthdate"/>
<field column="height" name="height"/>
<field column="email" name="email"/>
<field column="mobile" name="mobile"/>
<field column="workPhone" name="workPhone"/>
<field column="homePhone" name="homePhone"/>
<field column="address" name="address"/>
<field column="postal" name="postal"/>
<field column="idNumber" name="idNumber"/>
<entity name="workProv" query="select chName,enName from sm_province where id='${person.workProv}'">
<field column="chName" name="workProvchName"/>
<field column="enName" name="workProvenName"/>
</entity>
<entity name="workCity" query="select chName,enName from sm_city where id='${person.workCity}'">
<field column="chName" name="workCitychName"/>
<field column="enName" name="workCityenName"/>
</entity>
<entity name="houseProv" query="select chName,enName from sm_province where id='${person.houseProv}'">
<field column="chName" name="houseProvchName"/>
<field column="enName" name="houseProvenName"/>
</entity>
<entity name="houseCity" query="select chName,enName from sm_city where id='${person.houseCity}'">
<field column="chName" name="houseCitychName"/>
<field column="enName" name="houseCityenName"/>
</entity>
<entity name="origProv" query="select chName,enName from sm_province where id='${person.origProv}'">
<field column="chName" name="origProvchName"/>
<field column="enName" name="origProvenName"/>
</entity>
<entity name="origCity" query="select chName,enName from sm_city where id='${person.origCity}'">
<field column="chName" name="origCitychName"/>
<field column="enName" name="origCityenName"/>
</entity>
<field column="experience" name="experience"/>
<entity name="compId" query="select chFname,enFname from cm_company where id='${person.compId}'">
<field column="chFname" name="compIdchFname"/>
<field column="enFname" name="compIdenFname"/>
</entity>
<entity name="industry" query="select chName,enName from sm_industry where id='${person.industry}'">
<field column="chName" name="industrychName"/>
<field column="enName" name="industryenName"/>
</entity>
<entity name="post" query="select chName,enName from sm_post where id='${person.post}'">
<field column="chName" name="postchName"/>
<field column="enName" name="postenName"/>
</entity>
<entity name="subPost" query="select chName,enName from sm_subpost where id='${person.subPost}'">
<field column="chName" name="subPostchName"/>
<field column="enName" name="subPostenName"/>
</entity>
<field column="postRemark" name="postRemark"/>
<field column="departRemark" name="departRemark"/>
<field column="salaryMonth" name="salaryMonth"/>
<field column="salaryOfYear" name="salaryOfYear"/>
<field column="salaryOfMonth" name="salaryOfMonth"/>
<field column="bonus" name="bonus"/>
<field column="allowance" name="allowance"/>
<field column="stock" name="stock"/>
<field column="salaryRemark" name="salaryRemark"/>
<field column="expectLocation" name="expectLocation"/>
<field column="expectIndustry" name="expectIndustry"/>
<field column="expectPost" name="expectPost"/>
<field column="selfAssessment" name="selfAssessment"/>
<field column="completion" name="completion"/>
<field column="addressEn" name="addressEn"/>
<field column="departRemarkEn" name="departRemarkEn"/>
<field column="postRemarkEn" name="postRemarkEn"/>
<field column="salaryRemarkEn" name="salaryRemarkEn"/>
<field column="language" name="language"/>
<field column="selfAssessmentEn" name="selfAssessmentEn"/>
<field column="overseaLocation" name="overseaLocation"/>
</entity>
</document>
</dataConfig>

配置文件E:\SolrHome\solr\person\conf\schema.xml:

view plain

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.     
  3. <schema name="example" version="1.4">  
  4.       
  5.   <types>  
  6.        
  7.     <!-- The StrField type is not analyzed, but indexed/stored verbatim. -->  
  8.     <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>  
  9.     
  10.     <!-- boolean type: "true" or "false" -->  
  11.     <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/>  
  12.     <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->  
  13.     <fieldtype name="binary" class="solr.BinaryField"/>  
  14.     
  15.     <!-- 
  16.       Default numeric field types. For faster range queries, consider the tint/tfloat/tlong/tdouble types. 
  17.     -->  
  18.     <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>  
  19.     <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>  
  20.     <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>  
  21.     <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>  
  22.     
  23.        
  24.     <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>  
  25.     <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>  
  26.     <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>  
  27.     <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>  
  28.     
  29.        
  30.     <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/>  
  31.     
  32.     <!-- A Trie based date field for faster date range queries and date faceting. -->  
  33.     <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/>  
  34.     
  35.     
  36.     <fieldType name="pint" class="solr.IntField" omitNorms="true"/>  
  37.     <fieldType name="plong" class="solr.LongField" omitNorms="true"/>  
  38.     <fieldType name="pfloat" class="solr.FloatField" omitNorms="true"/>  
  39.     <fieldType name="pdouble" class="solr.DoubleField" omitNorms="true"/>  
  40.     <fieldType name="pdate" class="solr.DateField" sortMissingLast="true" omitNorms="true"/>  
  41.     
  42.     
  43.     <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>  
  44.     <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>  
  45.     <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>  
  46.     <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>  
  47.     
  48.     <fieldType name="random" class="solr.RandomSortField" indexed="true" />  
  49.     
  50.     <!-- A text field that only splits on whitespace for exact matching of words -->  
  51.     <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">  
  52.       <analyzer>  
  53.         <tokenizer class="solr.WhitespaceTokenizerFactory"/>  
  54.       </analyzer>  
  55.     </fieldType>  
  56.     
  57.     <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">  
  58.       <analyzer type="index">  
  59.         <tokenizer class="solr.StandardTokenizerFactory"/>  
  60.         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />  
  61.         <!-- in this example, we will only use synonyms at query time  
  62.         <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>  
  63.         -->  
  64.         <filter class="solr.LowerCaseFilterFactory"/>  
  65.       </analyzer>  
  66.       <analyzer type="query">  
  67.         <tokenizer class="solr.StandardTokenizerFactory"/>  
  68.         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />  
  69.         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>  
  70.         <filter class="solr.LowerCaseFilterFactory"/>  
  71.       </analyzer>  
  72.     </fieldType>  
  73.     
  74.     <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">  
  75.       <analyzer type="index">  
  76.         <tokenizer class="solr.StandardTokenizerFactory"/>  
  77.            
  78.         <filter class="solr.StopFilterFactory"  
  79.                 ignoreCase="true"  
  80.                 words="stopwords_en.txt"  
  81.                 enablePositionIncrements="true"  
  82.                 />  
  83.         <filter class="solr.LowerCaseFilterFactory"/>  
  84.     <filter class="solr.EnglishPossessiveFilterFactory"/>  
  85.         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>  
  86.     <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:  
  87.         <filter class="solr.EnglishMinimalStemFilterFactory"/>  
  88.     -->  
  89.         <filter class="solr.PorterStemFilterFactory"/>  
  90.       </analyzer>  
  91.       <analyzer type="query">  
  92.         <tokenizer class="solr.StandardTokenizerFactory"/>  
  93.         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>  
  94.         <filter class="solr.StopFilterFactory"  
  95.                 ignoreCase="true"  
  96.                 words="stopwords_en.txt"  
  97.                 enablePositionIncrements="true"  
  98.                 />  
  99.         <filter class="solr.LowerCaseFilterFactory"/>  
  100.     <filter class="solr.EnglishPossessiveFilterFactory"/>  
  101.         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>  
  102.     <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:  
  103.         <filter class="solr.EnglishMinimalStemFilterFactory"/>  
  104.     -->  
  105.         <filter class="solr.PorterStemFilterFactory"/>  
  106.       </analyzer>  
  107.     </fieldType>  
  108.     
  109.     <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">  
  110.       <analyzer type="index">  
  111.         <tokenizer class="solr.WhitespaceTokenizerFactory"/>  
  112.            
  113.         <filter class="solr.StopFilterFactory"  
  114.                 ignoreCase="true"  
  115.                 words="stopwords_en.txt"  
  116.                 enablePositionIncrements="true"  
  117.                 />  
  118.         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>  
  119.         <filter class="solr.LowerCaseFilterFactory"/>  
  120.         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>  
  121.         <filter class="solr.PorterStemFilterFactory"/>  
  122.       </analyzer>  
  123.       <analyzer type="query">  
  124.         <tokenizer class="solr.WhitespaceTokenizerFactory"/>  
  125.         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>  
  126.         <filter class="solr.StopFilterFactory"  
  127.                 ignoreCase="true"  
  128.                 words="stopwords_en.txt"  
  129.                 enablePositionIncrements="true"  
  130.                 />  
  131.         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>  
  132.         <filter class="solr.LowerCaseFilterFactory"/>  
  133.         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>  
  134.         <filter class="solr.PorterStemFilterFactory"/>  
  135.       </analyzer>  
  136.     </fieldType>  
  137.     
  138.     <!-- Less flexible matching, but less false matches.  Probably not ideal for product names,  
  139.          but may be good for SKUs.  Can insert dashes in the wrong place and still match. -->  
  140.     <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">  
  141.       <analyzer>  
  142.         <tokenizer class="solr.WhitespaceTokenizerFactory"/>  
  143.         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>  
  144.         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords_en.txt"/>  
  145.         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>  
  146.         <filter class="solr.LowerCaseFilterFactory"/>  
  147.         <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>  
  148.         <filter class="solr.EnglishMinimalStemFilterFactory"/>  
  149.         <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes  
  150.              possible with WordDelimiterFilter in conjuncton with stemming. -->  
  151.         <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>  
  152.       </analyzer>  
  153.     </fieldType>  
  154.     
  155.     <!-- Just like text_general except it reverses the characters of  
  156.      each token, to enable more efficient leading wildcard queries. -->  
  157.     <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100">  
  158.       <analyzer type="index">  
  159.         <tokenizer class="solr.StandardTokenizerFactory"/>  
  160.         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />  
  161.         <filter class="solr.LowerCaseFilterFactory"/>  
  162.         <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"  
  163.            maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/>  
  164.       </analyzer>  
  165.       <analyzer type="query">  
  166.         <tokenizer class="solr.StandardTokenizerFactory"/>  
  167.         <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>  
  168.         <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />  
  169.         <filter class="solr.LowerCaseFilterFactory"/>  
  170.       </analyzer>  
  171.     </fieldType>  
  172.     
  173.        
  174.     <fieldType name="alphaOnlySort" class="solr.TextField" sortMissingLast="true" omitNorms="true">  
  175.       <analyzer>  
  176.         <!-- KeywordTokenizer does no actual tokenizing, so the entire  
  177.              input string is preserved as a single token  
  178.           -->  
  179.         <tokenizer class="solr.KeywordTokenizerFactory"/>  
  180.         <!-- The LowerCase TokenFilter does what you expect, which can be  
  181.              when you want your sorting to be case insensitive  
  182.           -->  
  183.         <filter class="solr.LowerCaseFilterFactory" />  
  184.         <!-- The TrimFilter removes any leading or trailing whitespace -->  
  185.         <filter class="solr.TrimFilterFactory" />  
  186.            
  187.         <filter class="solr.PatternReplaceFilterFactory"  
  188.                 pattern="([^a-z])" replacement="" replace="all"  
  189.         />  
  190.       </analyzer>  
  191.     </fieldType>  
  192.         
  193.     <fieldtype name="phonetic" stored="false" indexed="true" class="solr.TextField" >  
  194.       <analyzer>  
  195.         <tokenizer class="solr.StandardTokenizerFactory"/>  
  196.         <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>  
  197.       </analyzer>  
  198.     </fieldtype>  
  199.     
  200.     <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" >  
  201.       <analyzer>  
  202.         <tokenizer class="solr.WhitespaceTokenizerFactory"/>  
  203.            
  204.         <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/>  
  205.       </analyzer>  
  206.     </fieldtype>  
  207.     
  208.     <!-- lowercases the entire field value, keeping it as a single token.  -->  
  209.     <fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">  
  210.       <analyzer>  
  211.         <tokenizer class="solr.KeywordTokenizerFactory"/>  
  212.         <filter class="solr.LowerCaseFilterFactory" />  
  213.       </analyzer>  
  214.     </fieldType>  
  215.     
  216.     <fieldType name="text_path" class="solr.TextField" positionIncrementGap="100">  
  217.       <analyzer>  
  218.         <tokenizer class="solr.PathHierarchyTokenizerFactory"/>  
  219.       </analyzer>  
  220.     </fieldType>  
  221.         
  222.     <fieldType name="textik" class="solr.TextField" >  
  223.        <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>    
  224.     
  225.        <analyzer type="index">    
  226.            <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/>    
  227.            <filter class="solr.StopFilterFactory"    
  228.                    ignoreCase="true" words="stopwords.txt"/>    
  229.            <filter class="solr.WordDelimiterFilterFactory"    
  230.                    generateWordParts="1"    
  231.                    generateNumberParts="1"    
  232.                    catenateWords="1"    
  233.                    catenateNumbers="1"    
  234.                    catenateAll="0"    
  235.                    splitOnCaseChange="1"/>    
  236.            <filter class="solr.LowerCaseFilterFactory"/>    
  237.            <filter class="solr.EnglishPorterFilterFactory"    
  238.                protected="protwords.txt"/>    
  239.            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>    
  240.        </analyzer>    
  241.         <analyzer type="query">    
  242.            <tokenizer class="org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false"/>    
  243.            <filter class="solr.StopFilterFactory"    
  244.                    ignoreCase="true" words="stopwords.txt"/>    
  245.            <filter class="solr.WordDelimiterFilterFactory"    
  246.                    generateWordParts="1"    
  247.                    generateNumberParts="1"    
  248.                    catenateWords="1"    
  249.                    catenateNumbers="1"    
  250.                    catenateAll="0"    
  251.                    splitOnCaseChange="1"/>    
  252.            <filter class="solr.LowerCaseFilterFactory"/>    
  253.            <filter class="solr.EnglishPorterFilterFactory"    
  254.                protected="protwords.txt"/>    
  255.            <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>    
  256.        </analyzer>           
  257.     </fieldType>  
  258.         
  259.     <!-- since fields of this type are by default not stored or indexed,  
  260.          any data added to them will be ignored outright.  -->   
  261.     <fieldtype name="ignored" stored="false" indexed="false" multiValued="true" class="solr.StrField" />  
  262.     
  263.     <fieldType name="point" class="solr.PointType" dimension="2" subFieldSuffix="_d"/>  
  264.     
  265.     <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->  
  266.     <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>  
  267.     
  268.    <!--  
  269.     A Geohash is a compact representation of a latitude longitude pair in a single field.  
  270.     See http://wiki.apache.org/solr/SpatialSearch  
  271.    -->  
  272.     <fieldtype name="geohash" class="solr.GeoHashField"/>  
  273.  </types>  
  274.     
  275.     
  276.  <fields>  
  277.     
  278.     <field name="id" type="string" indexed="true" stored="true" multiValued="false" required="true"/>  
  279.      <field name="code" type="string" indexed="true" stored="true" multiValued="false" />   
  280.      <field name="chName" type="string" indexed="true" stored="true" multiValued="false" />   
  281.      <field name="enName" type="string" indexed="true" stored="true" multiValued="false" />   
  282.      <field name="nickName" type="string" indexed="true" stored="true" multiValued="false" />  
  283.      <field name="birthdate" type="date" indexed="true" stored="true" multiValued="false" />   
  284.      <field name="height" type="tfloat" indexed="true" stored="true" multiValued="false" />   
  285.      <field name="email" type="string" indexed="true" stored="true" multiValued="false" />   
  286.      <field name="mobile" type="string" indexed="true" stored="true" multiValued="false" />   
  287.      <field name="workPhone" type="string" indexed="true" stored="true" multiValued="false" />   
  288.      <field name="homePhone" type="string" indexed="true" stored="true" multiValued="false" />   
  289.      <field name="address" type="string" indexed="true" stored="true" multiValued="false" />  
  290.     <field name="postal" type="string" indexed="true" stored="true" multiValued="false"/>  
  291.      <field name="idNumber" type="string" indexed="true" stored="true" multiValued="false" />   
  292.      <field name="workProvchName" type="string" indexed="true" stored="true" multiValued="false" />   
  293.      <field name="workProvenName" type="string" indexed="true" stored="true" multiValued="false" />   
  294.      <field name="workCitychName" type="string" indexed="true" stored="true" multiValued="false" />  
  295.      <field name="workCityenName" type="string" indexed="true" stored="true" multiValued="false" />   
  296.      <field name="houseProvchName" type="string" indexed="true" stored="true" multiValued="false" />   
  297.      <field name="houseProvenName" type="string" indexed="true" stored="true" multiValued="false" />   
  298.      <field name="houseCitychName" type="string" indexed="true" stored="true" multiValued="false" />   
  299.      <field name="houseCityenName" type="string" indexed="true" stored="true" multiValued="false" />   
  300.      <field name="origProvchName" type="string" indexed="true" stored="true" multiValued="false" />   
  301.      <field name="origProvenName" type="string" indexed="true" stored="true" multiValued="false" />   
  302.     <field name="origCitychName" type="string" indexed="true" stored="true" multiValued="false"/>  
  303.      <field name="origCityenName" type="string" indexed="true" stored="true" multiValued="false" />  
  304.     <field name="experience" type="string" indexed="true" stored="true" multiValued="false" />       
  305.      <field name="compIdchFname" type="string" indexed="true" stored="true" multiValued="false" />   
  306.      <field name="compIdenFname" type="string" indexed="true" stored="true" multiValued="false" />   
  307.      <field name="industrychName" type="string" indexed="true" stored="true" multiValued="false" />  
  308.      <field name="industryenName" type="string" indexed="true" stored="true" multiValued="false" />   
  309.      <field name="postchName" type="string" indexed="true" stored="true" multiValued="false" />   
  310.      <field name="postenName" type="string" indexed="true" stored="true" multiValued="false" />   
  311.      <field name="subPostchName" type="string" indexed="true" stored="true" multiValued="false" />   
  312.      <field name="subPostenName" type="string" indexed="true" stored="true" multiValued="false" />   
  313.      <field name="postRemark" type="string" indexed="true" stored="true" multiValued="false" />  
  314.     <field name="departRemark" type="string" indexed="true" stored="true" multiValued="false" />   
  315.      <field name="salaryMonth" type="string" indexed="true" stored="true" multiValued="false" />   
  316.     <field name="salaryOfYear" type="string" indexed="true" stored="true" multiValued="false"/>  
  317.      <field name="salaryOfMonth" type="string" indexed="true" stored="true" multiValued="false" />   
  318.      <field name="bonus" type="string" indexed="true" stored="true" multiValued="false" />   
  319.      <field name="allowance" type="string" indexed="true" stored="true" multiValued="false" />   
  320.      <field name="stock" type="string" indexed="true" stored="true" multiValued="false" />  
  321.      <field name="salaryRemark" type="string" indexed="true" stored="true" multiValued="false" />   
  322.      <field name="expectLocation" type="string" indexed="true" stored="true" multiValued="false" />   
  323.      <field name="expectIndustry" type="string" indexed="true" stored="true" multiValued="false" />   
  324.      <field name="expectPost" type="string" indexed="true" stored="true" multiValued="false" />   
  325.      <field name="selfAssessment" type="string" indexed="true" stored="true" multiValued="false" />   
  326.      <field name="completion" type="string" indexed="true" stored="true" multiValued="false" />   
  327.      <field name="addressEn" type="string" indexed="true" stored="true" multiValued="false" />   
  328.     <field name="departRemarkEn" type="string" indexed="true" stored="true" multiValued="false" />   
  329.      <field name="postRemarkEn" type="string" indexed="true" stored="true" multiValued="false" />   
  330.      <field name="salaryRemarkEn" type="string" indexed="true" stored="true" multiValued="false" />   
  331.      <field name="language" type="string" indexed="true" stored="true" multiValued="false" />   
  332.      <field name="selfAssessmentEn" type="string" indexed="true" stored="true" multiValued="false" />   
  333.      <field name="overseaLocation" type="string" indexed="true" stored="true" multiValued="false" />     
  334.     
  335.     <field name="persondetail" type="textik" indexed="true" stored="false" multiValued="true" />  
  336.     <copyField source="code" dest="persondetail" />  
  337.     <copyField source="chName" dest="persondetail" />  
  338.     <copyField source="enName" dest="persondetail" />  
  339.     <copyField source="nickName" dest="persondetail" />  
  340.     <copyField source="birthdate" dest="persondetail" />  
  341.     <copyField source="height" dest="persondetail" />  
  342.     <copyField source="email" dest="persondetail" />  
  343.     <copyField source="mobile" dest="persondetail" />  
  344.     <copyField source="workPhone" dest="persondetail" />  
  345.     <copyField source="homePhone" dest="persondetail" />  
  346.     <copyField source="address" dest="persondetail" />  
  347.     <copyField source="postal" dest="persondetail" />  
  348.     <copyField source="idNumber" dest="persondetail" />  
  349.     <copyField source="workProvchName" dest="persondetail" />  
  350.     <copyField source="workProvenName" dest="persondetail" />  
  351.     <copyField source="workCitychName" dest="persondetail" />  
  352.     <copyField source="workCityenName" dest="persondetail" />  
  353.     <copyField source="houseProvchName" dest="persondetail" />  
  354.     <copyField source="houseProvenName" dest="persondetail" />  
  355.     <copyField source="houseCitychName" dest="persondetail" />  
  356.     <copyField source="houseCityenName" dest="persondetail" />  
  357.     <copyField source="origProvchName" dest="persondetail" />  
  358.     <copyField source="origProvenName" dest="persondetail" />  
  359.     <copyField source="origCitychName" dest="persondetail" />  
  360.     <copyField source="origCityenName" dest="persondetail" />  
  361.     <copyField source="experience" dest="persondetail" />  
  362.     <copyField source="compIdchFname" dest="persondetail" />  
  363.     <copyField source="compIdenFname" dest="persondetail" />  
  364.     <copyField source="industrychName" dest="persondetail" />  
  365.     <copyField source="industryenName" dest="persondetail" />  
  366.     <copyField source="postchName" dest="persondetail" />  
  367.     <copyField source="postenName" dest="persondetail" />  
  368.     <copyField source="subPostchName" dest="persondetail" />  
  369.     <copyField source="subPostenName" dest="persondetail" />  
  370.     <copyField source="postRemark" dest="persondetail" />  
  371.     <copyField source="departRemark" dest="persondetail" />  
  372.     <copyField source="salaryMonth" dest="persondetail" />  
  373.     <copyField source="salaryOfYear" dest="persondetail" />  
  374.     <copyField source="salaryOfMonth" dest="persondetail" />  
  375.     <copyField source="bonus" dest="persondetail" />  
  376.     <copyField source="allowance" dest="persondetail" />  
  377.     <copyField source="stock" dest="persondetail" />  
  378.     <copyField source="salaryRemark" dest="persondetail" />  
  379.     <copyField source="expectLocation" dest="persondetail" />  
  380.     <copyField source="expectIndustry" dest="persondetail" />  
  381.     <copyField source="expectPost" dest="persondetail" />  
  382.     <copyField source="selfAssessment" dest="persondetail" />  
  383.     <copyField source="completion" dest="persondetail" />  
  384.     <copyField source="addressEn" dest="persondetail" />  
  385.     <copyField source="departRemarkEn" dest="persondetail" />  
  386.     <copyField source="postRemarkEn" dest="persondetail" />  
  387.     <copyField source="salaryRemarkEn" dest="persondetail" />  
  388.     <copyField source="language" dest="persondetail" />  
  389.     <copyField source="selfAssessmentEn" dest="persondetail" />  
  390.     <copyField source="overseaLocation" dest="persondetail" />  
  391.         
  392.  </fields>  
  393.      
  394.  <uniqueKey>id</uniqueKey>  
  395.     
  396.  <!-- field for the QueryParser to use when an explicit fieldname is absent -->  
  397.  <defaultSearchField>persondetail</defaultSearchField>  
  398.     
  399.  <!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->  
  400.  <solrQueryParser defaultOperator="OR"/>  
  401. </schema>  

 

配置文件E:\SolrHome\solr\person\conf\solrconfig.xml:

view plain

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <config>  
  3.       
  4.   <abortOnConfigurationError>${solr.abortOnConfigurationError:true}</abortOnConfigurationError>  
  5.       
  6.   <luceneMatchVersion>LUCENE_33</luceneMatchVersion>  
  7.     
  8.   <lib dir="http://www.cnblogs.com/contrib/extraction/lib" />  
  9.       
  10.   <lib dir="http://www.cnblogs.com/dist/" regex="apache-solr-cell-\d.*\.jar" />  
  11.   <lib dir="http://www.cnblogs.com/dist/" regex="apache-solr-clustering-\d.*\.jar" />  
  12.   <lib dir="http://www.cnblogs.com/dist/" regex="apache-solr-dataimporthandler-\d.*\.jar" />  
  13.     
  14.   <!-- If a dir option (with or without a regex) is used and nothing  
  15.        is found that matches, it will be ignored  
  16.        <dataDir>${solr.data.dir:solr/home/person/data}</dataDir>  
  17.     -->  
  18.   <lib dir="http://www.cnblogs.com/contrib/clustering/lib/" />  
  19.   <lib dir="/total/crap/dir/ignored" />   
  20.       
  21.   <dataDir>E:/SolrHome/solr/person/data</dataDir>  
  22.     
  23.   <directoryFactory name="DirectoryFactory"   
  24.                     class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/>  
  25.     
  26.     
  27.   <indexDefaults>  
  28.     
  29.     <useCompoundFile>false</useCompoundFile>  
  30.     
  31.     <mergeFactor>10</mergeFactor>  
  32.         
  33.     <ramBufferSizeMB>32</ramBufferSizeMB>  
  34.        
  35.     <maxFieldLength>10000</maxFieldLength>  
  36.     <writeLockTimeout>1000</writeLockTimeout>  
  37.     <commitLockTimeout>10000</commitLockTimeout>  
  38.     
  39.     <lockType>native</lockType>  
  40.     
  41.   </indexDefaults>  
  42.     
  43.      
  44.   <mainIndex>  
  45.     
  46.     <useCompoundFile>false</useCompoundFile>  
  47.     <ramBufferSizeMB>32</ramBufferSizeMB>  
  48.     <mergeFactor>10</mergeFactor>  
  49.     
  50.     <unlockOnStartup>false</unlockOnStartup>  
  51.         
  52.     <!-- If true, IndexReaders will be reopened (often more efficient)  
  53.          instead of closed and then opened.  
  54.       -->  
  55.     <reopenReaders>true</reopenReaders>  
  56.     
  57.     <deletionPolicy class="solr.SolrDeletionPolicy">  
  58.       <!-- The number of commit points to be kept -->  
  59.       <str name="maxCommitsToKeep">1</str>  
  60.       <!-- The number of optimized commit points to be kept -->  
  61.       <str name="maxOptimizedCommitsToKeep">0</str>  
  62.          
  63.     </deletionPolicy>  
  64.     
  65.      <infoStream file="INFOSTREAM.txt">false</infoStream>   
  66.     
  67.   </mainIndex>  
  68.     
  69.      
  70.   <jmx />  
  71.      
  72.   <updateHandler class="solr.DirectUpdateHandler2"></updateHandler>  
  73.       
  74.    <query>  
  75.        
  76.     <maxBooleanClauses>1024</maxBooleanClauses>  
  77.     
  78.     
  79.     <filterCache class="solr.FastLRUCache"  
  80.                  size="512"  
  81.                  initialSize="512"  
  82.                  autowarmCount="0"/>  
  83.     
  84.     <queryResultCache class="solr.LRUCache"  
  85.                      size="512"  
  86.                      initialSize="512"  
  87.                      autowarmCount="0"/>  
  88.        
  89.        
  90.     <documentCache class="solr.LRUCache"  
  91.                    size="512"  
  92.                    initialSize="512"  
  93.                    autowarmCount="0"/>  
  94.       
  95.        
  96.     <enableLazyFieldLoading>true</enableLazyFieldLoading>  
  97.     
  98.       
  99.    <queryResultWindowSize>20</queryResultWindowSize>  
  100.     
  101.    <!-- Maximum number of documents to cache for any entry in the  
  102.         queryResultCache.   
  103.      -->  
  104.    <queryResultMaxDocsCached>200</queryResultMaxDocsCached>  
  105.     
  106.       
  107.     <!-- QuerySenderListener takes an array of NamedList and executes a  
  108.          local query request for each NamedList in sequence.   
  109.       -->  
  110.     <listener event="newSearcher" class="solr.QuerySenderListener">  
  111.       <arr name="queries">  
  112.         <!--  
  113.            <lst><str name="q">solr</str><str name="sort">price asc</str></lst>  
  114.            <lst><str name="q">rocks</str><str name="sort">weight asc</str></lst>  
  115.           -->  
  116.       </arr>  
  117.     </listener>  
  118.     <listener event="firstSearcher" class="solr.QuerySenderListener">  
  119.       <arr name="queries">  
  120.         <lst>  
  121.           <str name="q">static firstSearcher warming in solrconfig.xml</str>  
  122.         </lst>  
  123.       </arr>  
  124.     </listener>  
  125.     
  126.        
  127.     <useColdSearcher>false</useColdSearcher>  
  128.     
  129.        
  130.     <maxWarmingSearchers>2</maxWarmingSearchers>  
  131.     
  132.   </query>  
  133.     
  134.     
  135.   <requestDispatcher handleSelect="true" >  
  136.        
  137.     <requestParsers enableRemoteStreaming="true"   
  138.                     multipartUploadLimitInKB="2048000" />  
  139.     
  140.     <httpCaching never304="true" />  
  141.        
  142.   </requestDispatcher>  
  143.     
  144.   <requestHandler name="search" class="solr.SearchHandler" default="true">  
  145.     <!-- default values for query parameters can be specified, these  
  146.          will be overridden by parameters in the request  
  147.       -->  
  148.      <lst name="defaults">  
  149.        <str name="echoParams">explicit</str>  
  150.        <int name="rows">10</int>  
  151.      </lst>  
  152.        
  153.        
  154.     </requestHandler>  
  155.         
  156.     <requestHandler name="/browse" class="solr.SearchHandler">  
  157.      <lst name="defaults">  
  158.        <str name="echoParams">explicit</str>  
  159.     
  160.        <!-- VelocityResponseWriter settings -->  
  161.        <str name="wt">velocity</str>  
  162.     
  163.        <str name="v.template">browse</str>  
  164.        <str name="v.layout">layout</str>  
  165.        <str name="title">Solritas</str>  
  166.     
  167.        <str name="defType">edismax</str>  
  168.        <str name="q.alt">*:*</str>  
  169.        <str name="rows">10</str>  
  170.        <str name="fl">*,score</str>  
  171.        <str name="mlt.qf">  
  172.          text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4  
  173.        </str>  
  174.        <str name="mlt.fl">text,features,name,sku,id,manu,cat</str>  
  175.        <int name="mlt.count">3</int>  
  176.     
  177.        <str name="qf">  
  178.           text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4  
  179.        </str>  
  180.     
  181.        <str name="facet">on</str>  
  182.        <str name="facet.field">cat</str>  
  183.        <str name="facet.field">manu_exact</str>  
  184.        <str name="facet.query">ipod</str>  
  185.        <str name="facet.query">GB</str>  
  186.        <str name="facet.mincount">1</str>  
  187.        <str name="facet.pivot">cat,inStock</str>  
  188.        <str name="facet.range">price</str>  
  189.        <int name="f.price.facet.range.start">0</int>  
  190.        <int name="f.price.facet.range.end">600</int>  
  191.        <int name="f.price.facet.range.gap">50</int>  
  192.        <str name="f.price.facet.range.other">after</str>  
  193.        <str name="facet.range">manufacturedate_dt</str>  
  194.        <str name="f.manufacturedate_dt.facet.range.start">NOW/YEAR-10YEARS</str>  
  195.        <str name="f.manufacturedate_dt.facet.range.end">NOW</str>  
  196.        <str name="f.manufacturedate_dt.facet.range.gap">+1YEAR</str>  
  197.        <str name="f.manufacturedate_dt.facet.range.other">before</str>  
  198.        <str name="f.manufacturedate_dt.facet.range.other">after</str>  
  199.     
  200.     
  201.        <!-- Highlighting defaults -->  
  202.        <str name="hl">on</str>  
  203.        <str name="hl.fl">text features name</str>  
  204.        <str name="f.name.hl.fragsize">0</str>  
  205.        <str name="f.name.hl.alternateField">name</str>  
  206.      </lst>  
  207.      <arr name="last-components">  
  208.        <str>spellcheck</str>  
  209.      </arr>  
  210.      <!-- 
  211.      <str name="url-scheme">httpx</str> 
  212.      -->  
  213.   </requestHandler>  
  214.     
  215.   <requestHandler name="/update"   
  216.                   class="solr.XmlUpdateRequestHandler">  
  217.        
  218.     </requestHandler>  
  219.   <!-- Binary Update Request Handler  
  220.        http://wiki.apache.org/solr/javabin  
  221.     -->  
  222.   <requestHandler name="/update/javabin"   
  223.                   class="solr.BinaryUpdateRequestHandler" />  
  224.     
  225.   <!-- CSV Update Request Handler  
  226.        http://wiki.apache.org/solr/UpdateCSV  
  227.     -->  
  228.   <requestHandler name="/update/csv"   
  229.                   class="solr.CSVRequestHandler"   
  230.                   startup="lazy" />  
  231.     
  232.   <!-- JSON Update Request Handler  
  233.        http://wiki.apache.org/solr/UpdateJSON  
  234.     -->  
  235.   <requestHandler name="/update/json"   
  236.                   class="solr.JsonUpdateRequestHandler"   
  237.                   startup="lazy" />  
  238.     
  239.   <!-- Solr Cell Update Request Handler  
  240.     
  241.        http://wiki.apache.org/solr/ExtractingRequestHandler   
  242.     
  243.     -->  
  244.   <requestHandler name="/update/extract"   
  245.                   startup="lazy"  
  246.                   class="solr.extraction.ExtractingRequestHandler" >  
  247.     <lst name="defaults">  
  248.       <!-- All the main content goes into "text"... if you need to return  
  249.            the extracted text or do highlighting, use a stored field. -->  
  250.       <str name="fmap.content">text</str>  
  251.       <str name="lowernames">true</str>  
  252.       <str name="uprefix">ignored_</str>  
  253.     
  254.       <!-- capture link hrefs but ignore div attributes -->  
  255.       <str name="captureAttr">true</str>  
  256.       <str name="fmap.a">links</str>  
  257.       <str name="fmap.div">ignored_</str>  
  258.     </lst>  
  259.   </requestHandler>  
  260.     
  261.   <requestHandler name="/analysis/field"   
  262.                   startup="lazy"  
  263.                   class="solr.FieldAnalysisRequestHandler" />  
  264.     
  265.     
  266.   <requestHandler name="/analysis/document"   
  267.                   class="solr.DocumentAnalysisRequestHandler"   
  268.                   startup="lazy" />  
  269.     
  270.   <!-- Admin Handlers  
  271.     
  272.        Admin Handlers - This will register all the standard admin  
  273.        RequestHandlers.    
  274.     -->  
  275.   <requestHandler name="/admin/"   
  276.                   class="solr.admin.AdminHandlers" />  
  277.      
  278.   <!-- ping/healthcheck -->  
  279.   <requestHandler name="/admin/ping" class="solr.PingRequestHandler">  
  280.     <lst name="defaults">  
  281.       <str name="qt">search</str>  
  282.       <str name="q">solrpingquery</str>  
  283.       <str name="echoParams">all</str>  
  284.     </lst>  
  285.   </requestHandler>  
  286.     
  287.   <!-- Echo the request contents back to the client -->  
  288.   <requestHandler name="/debug/dump" class="solr.DumpRequestHandler" >  
  289.     <lst name="defaults">  
  290.      <str name="echoParams">explicit</str>   
  291.      <str name="echoHandler">true</str>  
  292.     </lst>  
  293.   </requestHandler>  
  294.       
  295.       
  296.   <searchComponent name="spellcheck" class="solr.SpellCheckComponent">  
  297.     
  298.     <str name="queryAnalyzerFieldType">textSpell</str>  
  299.     
  300.     <!-- Multiple "Spell Checkers" can be declared and used by this  
  301.          component  
  302.       -->  
  303.     
  304.     <!-- a spellchecker built from a field of the main index, and  
  305.          written to disk  
  306.       -->  
  307.     <lst name="spellchecker">  
  308.       <str name="name">default</str>  
  309.       <str name="field">name</str>  
  310.       <str name="spellcheckIndexDir">spellchecker</str>  
  311.       <!-- uncomment this to require terms to occur in 1% of the documents in order to be included in the dictionary  
  312.         <float name="thresholdTokenFrequency">.01</float>  
  313.       -->  
  314.     </lst>  
  315.     
  316.        
  317.   </searchComponent>  
  318.     
  319.      
  320.   <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">  
  321.     <lst name="defaults">  
  322.       <str name="spellcheck.onlyMorePopular">false</str>  
  323.       <str name="spellcheck.extendedResults">false</str>  
  324.       <str name="spellcheck.count">1</str>  
  325.     </lst>  
  326.     <arr name="last-components">  
  327.       <str>spellcheck</str>  
  328.     </arr>  
  329.   </requestHandler>  
  330.     
  331.   <!-- Term Vector Component  
  332.     
  333.        http://wiki.apache.org/solr/TermVectorComponent  
  334.     -->  
  335.   <searchComponent name="tvComponent" class="solr.TermVectorComponent"/>  
  336.     
  337.   <requestHandler name="tvrh" class="solr.SearchHandler" startup="lazy">  
  338.     <lst name="defaults">  
  339.       <bool name="tv">true</bool>  
  340.     </lst>  
  341.     <arr name="last-components">  
  342.       <str>tvComponent</str>  
  343.     </arr>  
  344.   </requestHandler>  
  345.     
  346.      
  347.   <searchComponent name="clustering"   
  348.                    enable="${solr.clustering.enabled:false}"  
  349.                    class="solr.clustering.ClusteringComponent" >  
  350.     <!-- Declare an engine -->  
  351.     <lst name="engine">  
  352.       <!-- The name, only one can be named "default" -->  
  353.       <str name="name">default</str>  
  354.     
  355.       <str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str>  
  356.     
  357.       <str name="LingoClusteringAlgorithm.desiredClusterCountBase">20</str>  
  358.          
  359.       <str name="carrot.lexicalResourcesDir">clustering/carrot2</str>  
  360.     
  361.       <str name="MultilingualClustering.defaultLanguage">ENGLISH</str>  
  362.     </lst>  
  363.     <lst name="engine">  
  364.       <str name="name">stc</str>  
  365.       <str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str>  
  366.     </lst>  
  367.   </searchComponent>  
  368.     
  369.   <requestHandler name="/clustering"  
  370.                   startup="lazy"  
  371.                   enable="${solr.clustering.enabled:false}"  
  372.                   class="solr.SearchHandler">  
  373.     <lst name="defaults">  
  374.       <bool name="clustering">true</bool>  
  375.       <str name="clustering.engine">default</str>  
  376.       <bool name="clustering.results">true</bool>  
  377.       <!-- The title field -->  
  378.       <str name="carrot.title">name</str>  
  379.       <str name="carrot.url">id</str>  
  380.       <!-- The field to cluster on -->  
  381.        <str name="carrot.snippet">features</str>  
  382.        <!-- produce summaries -->  
  383.        <bool name="carrot.produceSummary">true</bool>  
  384.        <!-- the maximum number of labels per cluster -->  
  385.        <!--<int name="carrot.numDescriptions">5</int>-->  
  386.        <!-- produce sub clusters -->  
  387.        <bool name="carrot.outputSubClusters">false</bool>  
  388.            
  389.        <str name="defType">edismax</str>  
  390.        <str name="qf">  
  391.           text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4  
  392.        </str>  
  393.        <str name="q.alt">*:*</str>  
  394.        <str name="rows">10</str>  
  395.        <str name="fl">*,score</str>  
  396.     </lst>       
  397.     <arr name="last-components">  
  398.       <str>clustering</str>  
  399.     </arr>  
  400.   </requestHandler>  
  401.       
  402.   <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">   
  403.       <lst name="defaults">   
  404.       <str name="config">E:/SolrHome/solr/person/conf/data-config.xml</str>    
  405.       </lst>   
  406.     </requestHandler>  
  407.       
  408.      
  409.   <searchComponent name="terms" class="solr.TermsComponent"/>  
  410.     
  411.   <!-- A request handler for demonstrating the terms component -->  
  412.   <requestHandler name="/terms" class="solr.SearchHandler" startup="lazy">  
  413.      <lst name="defaults">  
  414.       <bool name="terms">true</bool>  
  415.     </lst>       
  416.     <arr name="components">  
  417.       <str>terms</str>  
  418.     </arr>  
  419.   </requestHandler>  
  420.     
  421.   <searchComponent name="elevator" class="solr.QueryElevationComponent" >  
  422.     <!-- pick a fieldType to analyze queries -->  
  423.     <str name="queryFieldType">string</str>  
  424.     <str name="config-file">elevate.xml</str>  
  425.   </searchComponent>  
  426.     
  427.   <!-- A request handler for demonstrating the elevator component -->  
  428.   <requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">  
  429.     <lst name="defaults">  
  430.       <str name="echoParams">explicit</str>  
  431.     </lst>  
  432.     <arr name="last-components">  
  433.       <str>elevator</str>  
  434.     </arr>  
  435.   </requestHandler>  
  436.     
  437.   <!-- Highlighting Component  
  438.     
  439.        http://wiki.apache.org/solr/HighlightingParameters  
  440.     -->  
  441.   <searchComponent class="solr.HighlightComponent" name="highlight">  
  442.     <highlighting>  
  443.       <!-- Configure the standard fragmenter -->  
  444.       <!-- This could most likely be commented out in the "default" case -->  
  445.       <fragmenter name="gap"   
  446.                   default="true"  
  447.                   class="solr.highlight.GapFragmenter">  
  448.         <lst name="defaults">  
  449.           <int name="hl.fragsize">100</int>  
  450.         </lst>  
  451.       </fragmenter>  
  452.     
  453.       <!-- A regular-expression-based fragmenter   
  454.            (for sentence extraction)   
  455.         -->  
  456.       <fragmenter name="regex"   
  457.                   class="solr.highlight.RegexFragmenter">  
  458.         <lst name="defaults">  
  459.           <!-- slightly smaller fragsizes work better because of slop -->  
  460.           <int name="hl.fragsize">70</int>  
  461.           <!-- allow 50% slop on fragment sizes -->  
  462.           <float name="hl.regex.slop">0.5</float>  
  463.           <!-- a basic sentence pattern -->  
  464.           <str name="hl.regex.pattern">[-\w ,/\n\"']{20,200}</str>  
  465.         </lst>  
  466.       </fragmenter>  
  467.     
  468.       <!-- Configure the standard formatter -->  
  469.       <formatter name="html"   
  470.                  default="true"  
  471.                  class="solr.highlight.HtmlFormatter">  
  472.         <lst name="defaults">  
  473.           <str name="hl.simple.pre"><![CDATA[<em>]]></str>  
  474.           <str name="hl.simple.post"><![CDATA[</em>]]></str>  
  475.         </lst>  
  476.       </formatter>  
  477.     
  478.       <!-- Configure the standard encoder -->  
  479.       <encoder name="html"   
  480.                class="solr.highlight.HtmlEncoder" />  
  481.     
  482.       <!-- Configure the standard fragListBuilder -->  
  483.       <fragListBuilder name="simple"   
  484.                        default="true"  
  485.                        class="solr.highlight.SimpleFragListBuilder"/>  
  486.     
  487.       <!-- Configure the single fragListBuilder -->  
  488.       <fragListBuilder name="single"   
  489.                        class="solr.highlight.SingleFragListBuilder"/>  
  490.     
  491.       <!-- default tag FragmentsBuilder -->  
  492.       <fragmentsBuilder name="default"   
  493.                         default="true"  
  494.                         class="solr.highlight.ScoreOrderFragmentsBuilder">  
  495.         <!--   
  496.         <lst name="defaults">  
  497.           <str name="hl.multiValuedSeparatorChar">/</str>  
  498.         </lst>  
  499.         -->  
  500.       </fragmentsBuilder>  
  501.     
  502.       <!-- multi-colored tag FragmentsBuilder -->  
  503.       <fragmentsBuilder name="colored"   
  504.                         class="solr.highlight.ScoreOrderFragmentsBuilder">  
  505.         <lst name="defaults">  
  506.           <str name="hl.tag.pre"><![CDATA[ 
  507.                <b style="background:yellow">,<b style="background:lawgreen">, 
  508.                <b style="background:aquamarine">,<b style="background:magenta">, 
  509.                <b style="background:palegreen">,<b style="background:coral">, 
  510.                <b style="background:wheat">,<b style="background:khaki">, 
  511.                <b style="background:lime">,<b style="background:deepskyblue">]]></str>  
  512.           <str name="hl.tag.post"><![CDATA[</b>]]></str>  
  513.         </lst>  
  514.       </fragmentsBuilder>  
  515.     </highlighting>  
  516.   </searchComponent>  
  517.     
  518.   <queryResponseWriter name="xslt" class="solr.XSLTResponseWriter">  
  519.     <int name="xsltCacheLifetimeSeconds">5</int>  
  520.   </queryResponseWriter>  
  521.     
  522.     
  523.   <admin>  
  524.     <defaultQuery>solr</defaultQuery>  
  525.   </admin>  
  526.     
  527. </config>  

 

使用到的jar包,路径:E:\apache-tomcat-6.0.29\webapps\solr\WEB-INF\lib

posted @ 2011-11-03 15:04  爱开卷360  阅读(3404)  评论(0编辑  收藏  举报