1 添加自己的分词器(mmseg4j)

意思是textCommplex 这个类型,用的是 com.chenlb.mmseg4j.solr.MMSegTokenizerFactory 这个分词器,词库是用到的solr.home目录下面的dic目录, 但是mmseg4j.jar 1.9 把词库包进去了,想要用外面的,需要把里面的删除掉, <filter class="solr.LowerCaseFilterFactory"/>  下面可选择性的添加一些自己的过滤器

     <fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType> <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

2 添加自己的字段

name:字段名称 type:字段类型 indexed:是否索引 stored:是否存储 multiValued:是否是多值

NOT_ANALYZED_NOT_NORMS YES 标识符(主键、文件名),电话号码,身份证号,姓名,日期
ANAYLZED YES 文档标题和摘要
ANAYLZED NO 文档正文
NO YES 文档类型,数据库主键(不进行索引)
NOT_ANALYZED NO 隐藏关键字
Field.Store.*
YES:将会存储域值,原始字符串的值会保存在索引,以此可以进行相应的恢复操作,对于主键,标题可以是这种方式存储
NO:不会存储域值,通常与Index.ANAYLIZED合起来使用,索引一些如文章正文等不需要恢复的文档 使用Field.Index.*来进行操作
Index.ANALYZED:进行分词和索引,适用于标题、内容等
Index.NOT_ANALYZED:进行索引,但是不进行分词,如果身份证号,姓名,ID等,适用于精确搜索
Index.ANALYZED_NOT_NORMS:进行分词但是不存储norms信息,这个norms中包括了创建索引的时间和权值等信息
Index.NOT_ANALYZED_NOT_NORMS:即不进行分词也不存储norms信息
Index.NO:不进行索引
<field name="msg_title" type="textComplex" indexed="true" stored="true" multiValued="false" /> 
<field name="msg_content" type="textComplex" indexed="true" stored="false" multiValued="false" />
<field name="msg_text" type="textComplex" indexed="true" stored="false" multiValued="true" />

3 合并字段

 把msg_title he msg_content 都拷贝到msg_text 中, 这是上面 field msg_text 的 multiValued 字段就必须为 true

<copyField source="msg_title" dest="msg_text"/>
<copyField source="msg_content" dest="msg_text"/>

4 设置默认搜索字段

在schema.xml 中把注释这个打开进行修改,但是并不生效,因为

Un-commenting defaultSearchField will be insufficient if your request handler in solrconfig.xml defines "df", which takes precedence. That would need to be removed.

<defaultSearchField>text</defaultSearchField>

在 solrconfig.xml 中也有这个配置,而且优先级更高,所以要让这个生效,必须把 <str name="df">text</str> 这个删除了

<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">text</str>
</lst>

5 过滤器

1 停用词过滤器,就是哪些词忽略掉,参考stopwords.txt (eg:a an and are  as at be but)

<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />

2 同义词过滤器,就是哪些词是一个意思,参考synonyms.txt(eg: pixima => pixma)

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>

3 转小写过滤器
<filter class="solr.LowerCaseFilterFactory"/>

6 动态字段

意识字段名称以_i结尾的,在名称匹配不到的情况下,就来匹配动态字段这个,那么就是int类型(eg:xxoo_i 找不到<Field name="xxoo"> 的情况)

<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>

Solr配置文件 schema.xml的更多相关文章

  1. Solr中Schema.xml中文版

    <?xml version="1.0" encoding="UTF-8" ?> <!-- Licensed to the Apache Sof ...

  2. Solr入门之(5)配置文件schema.xml

    该配置文件中的标签:<fileTypes>.<fields>.<uniqueKey>.<copyField> fieldType说明 标签types中定 ...

  3. solr的schema.xml配置属性解释

    schema.xml做什么? SOLR加载数据,创建索引和数据时,核心数据结构的配置文件是schema.xml,该配置文件主要用于配置数据源,字段类型定义,搜索类型定义等.schema.xml的配置直 ...

  4. 认识配置文件schema.xml(managed-schema)

    1.schema文件是在SolrConfig中的架构工厂定义,有两种定义模式: 1.1.默认的托管模式: solr默认使用的就是托管模式.也就是当在solrconfig.xml文件中没有显式声明< ...

  5. Mycat配置文件schema.xml参数配置

    Mycat原理: Mycat的原理中最重要的一个动词是"拦截",它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析.路由分析.读写分离分析.缓存分析等 ...

  6. Solr中schema.xml的解释

    接Solr-4.10.2与Tomcat整合.schema.xml位于D:\solr\data\solr\collection1\conf\中.1.fieldType节点    name: FieldT ...

  7. Mycat 配置文件schema.xml

    1.介绍 schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库.表.分片规则. DataNode 以及 DataSource. 2.schema相关标签 sche ...

  8. solr的schema.xml配置文件关键词意义

    fieldType:配置扩展的分析器analyzer:具体的分析器的全路径field:配置具体的索引业务字段name:字段的名称type:指定使用哪种分析器域:StringField,textFiel ...

  9. solr 6.0 没有schema.xml未自动创建schema文件

    solr 6.0 没有schema.xml未自动创建schema文件 摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中 ...

随机推荐

  1. 乞讨 间隔[a,b]在见面p^k*q*^m(k&gt;m)中数号码

    标题叙述性说明: 1<=a,b<=10^18,p,q他们是素数  2<=p,q<=10^9; 求在[a,b]内能够表示为  x*p^k*q^m  k > m   的数的个 ...

  2. respondsToSelector的作用

    1.respondsToSelector 用来推断某一个方法时候实现(以下的代码意思:假设baseAPIdidStartRequest这种方法实现了,那么就去调用,防止出现异常) if ([self. ...

  3. poj1548Robots dfs实践

    //搜索每一行 //该生产线的整点已被清除 //然后位置,然后转移到下一个步走的最后一点 //然后,所有点的下面一行清晰 //然后重复上面的操作 #include<iostream> #i ...

  4. 解决引用 System.Windows.Interactivity程序集生成多国语言文件夹fr、es、ja等问题

    原文:解决引用 System.Windows.Interactivity程序集生成多国语言文件夹fr.es.ja等问题 通过以下方式对 System.Windows.Interactivity程序集添 ...

  5. ajax默认form表单提交,导致实体不识别

    出现位置:实体比较复杂,包含List之类的时候 public class AdvertisementType { /// <summary> /// 广告位名称 /// </summ ...

  6. jquery li练习

    <!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...

  7. Rust这种新型的语言注定火不起来,功能太强大(特性太多),还不如用成熟稳定强大的C/C++,而且生态不行、所以恶性循环

    这种新型的语言注定火不起来,功能太强大(特性太多),还不如用成熟稳定强大的C/C++,,而Golang足够简单,入门快,编译快,性能也强悍,解决了服务端开发人员的痛点,,注定被大多数人接受... go ...

  8. PostMessage和SendMessage有什么区别?(有EnumChildWindowsProc的例子)

    PostMessage只是把消息放入队列,不管其他程序是否处理都返回,然后继续执行;而SendMessage必须等待其他程序处理消息后才返回,继续执行.PostMessage的返回值表示PostMes ...

  9. java设计模式(2)

    工厂模式定义 在面向对象程序设计中,工厂通常是用来创建其他对象的对象,工产模式根据不同的参数来实现不同的分配方案和创建对象. 在工产模式中,我们创建对象时不会对客户端暴露创建逻辑,而且是通过使用一个共 ...

  10. vs2017 cordova调试ios app

    https://docs.microsoft.com/en-us/visualstudio/cross-platform/tools-for-cordova/first-steps/ios-guide ...