schema.xml這個配置文件的根本目的是爲了經過配置告訴Solr如何創建索引。數據庫
solr的數據結構以下:apache
solr經過搜索某個或某些field,返回若干個符合條件的document,或者按搜索的score排序返回。json
若是跟數據庫對比,document至關於數據庫的表,field至關於表中的字段。而schema.xml就是爲了定義一個表的結構(定義各個field的名字、類型、約束、等等)。api
schema.xml的基本結構以下:數據結構
<schema>ide
<types>ui
<fields>.net
<uniqueKey>code
<copyField>xml
</schema>
經常使用的配置說明:
一個簡單的例子:
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="course_video" version="1.5">
<field name="id" type="int" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="title" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="tags" type="string" indexed="true" stored="false" required="false" multiValued="false" />
<field name="content" type="string" indexed="true" stored="true" required="false" multiValued="false" />
<field name="info_text" type="text_general" indexed="true" stored="false" multiValued="true" />
<copyField source="title" dest="info_text" />
<copyField source="content" dest="info_text" />
<copyField source="tags" dest="info_text" />
<uniqueKey>id</uniqueKey>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</schema>
注:solrconfig.xml配置文件中,requestHandler "/select"的缺省「df」是「text」。若是按照上面的配置,咱們想要的缺省搜索info_text,因此須要在solrconfig.xml中修改:
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="defType">edismax</str>
<str name="df">info_text</str>
</lst>
</requestHandler>
能夠經過http api獲取schema信息:
http://<ip>:8983/solr/<collection>/schema?wt=json
http://<ip>:8983/solr/<collection>/schema/fields?wt=json
http://<ip>:8983/solr/<collection>/schema/dynamicfields?wt=json
http://<ip>:8983/solr/<collection>/schema/copyfields?wt=json