700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Solr 配置文件之schema.xml

Solr 配置文件之schema.xml

时间:2022-04-16 08:01:16

相关推荐

Solr 配置文件之schema.xml

schema.xml这个配置文件的根本目的是为了通过配置告诉Solr怎样建立索引。

solr的数据结构例如以下:document:一个文档、一条记录 field:域、属性 solr通过搜索某个或某些field,返回若干个符合条件的document。或者按搜索的score排序返回。 假设跟数据库对照,document相当于数据库的表,field相当于表中的字段。而schema.xml就是为了定义一个表的结构(定义各个field的名字、类型、约束、等等)。

schema.xml的基本结构例如以下:<schema> <types> <fields> <uniqueKey> <copyField> </schema>

经常使用的配置说明:field:定义一个document中的各个fieldsname:必填。该field的名字。前后都有下划线的name是系统保留的名字,比方“_version_”type:必填。

类型。相应于fieldType的name

default:该field的缺省值indexed:true/false。是否为该field建立索引,以让用户能够搜索它、统计它(facet)stored:true/false,定义这个field能否够返回给查询者multiValued:true/false。能否够容纳多个值(比方多个copyField的dest指向它)。假设是true。则该field不能被排序、不能作为uniqueKeyrequired:true/false。告诉solr这个field是否接受空值,缺省为falsedocValues:true/false。建立document-to-value索引。以提高某些特殊搜索的效率(排序、统计、高亮)copyField:把一个field的内容复制到另外一个field中。一般用来把几个不同的field copy到同一个field中,以方便仅仅对一个field进行搜索source:被拷贝的field,支持用通配符指定多个field,比方:*_namedest:复制到的目的fieldmaxChars:最大字符数uniqueKey:指定一个field为唯一索引fieldType:定义field的类型,包含以下一些属性name:必填,被field配置使用class:必填,filedType的实现类。solr.TextField是路径缩写,"等价于"org.apache.solr.schema.TextField"multiValued:?positionIncrementGap:指定mutiValued的距离ananlyzer:假设class是solr.TextField,这个配置是必填的。

告诉solr怎样处理某些单词、怎样分词,比方要不要去掉“a”。要不要所有变成小写……

type:index或querytokenizer:分词器,比方:StandardTokenizerFactoryfilter:过滤器。比方:LowerCaseFilterFactorydynamicField:用通配符定义一个field来存在没有被field定义的漏网之鱼name:使用通配符。比方“*_i”,来处理类似“cost_i”之类的field

一个简单的样例:

<?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

(原创文章,转载请注明转自Clement-Xu的博客)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。