有些时候,我们需要自定义 fieldType。下面的例子就是自定义的 fieldType,<analyzer type="index"> 表示索引时怎么处理,<analyzer type="query">表示查询时怎么处理。

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- 本例中,我们只在查询时应用同义词
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

tokenizer: 对输入流进行分词。这里的“solr.” 代表:org.apache.solr.analysis. 这个包

filter: 对tokenizer输出的每一个分词,进行处理。

Tokenizer

1. solr.StandardTokenizerFactory

把文本用空格和标点符号分割。对于小数点(.),如果后面不是空格的话,将会被保留。如网址。连字符(-)的两边会被分割成两个分词(token)。

参数:maxTokenLength  分词的最大长度,超出部分将被忽略。

example:

<analyzer>
<tokenizer class="solr.StandardTokenizerFactory" maxTokenLength="100"/>
</analyzer>

输入:   Please email john.doe@foo.com by 03-09, re: m37-xq.

输出:   "Please", "email", "john.doe", "foo.com", "by", "03", "09", "re", "m37", "xq"

2. solr.ClassicTokenizerFactory

跟StardardTokenizerFactory差不多,不同点如下:

(1)连字符(-)两边如果有数字的话,将不会被拆分。

(2)能识别邮件地址

参数:maxTokenLength  分词的最大长度,超出部分将被忽略。

示例:

输入:   Please email john.doe@foo.com by 03-09, re: m37-xq.

输出:   "Please", "email", "john.doe@foo.com", "by", "03-09", "re", "m37-xq"

3. solr.KeywordTokenizerFactory

整个文本做为一个分词。

示例:

输入:   Please email john.doe@foo.com by 03-09, re: m37-xq.

输出:   “Please email john.doe@foo.com by 03-09, re: m37-xq"

4. solr.LetterTokenizerFactory

连续的字母做为一个分词。

示例:

输入:   I can't.

输出:   “I", "can", "t"

5. solr.LowerCaseTokenizerFactory

按非字母进行分词,并转化成小写。

示例:

输入:   I LOVE my iPhone.

输出:   “I", "love", "my", "iphone"

6. solr.NGramTokenizerFactory

对文本按照 n-Gram 进行分词。

参数:minGramSize (default 1) -- 必须 > 0

maxGramSize (default 2) -- 必须 >= minGramSize

示例:

输入:   hey man

输出:   “h", "e", "y", " ", “m", "a", "n", "he", “ey", "y ", " m", "ma", "an"

7. solr.EdgeNGramTokenizerFactory

对文本按照 n-Gram 进行分词。

参数:minGramSize (default 1) -- 必须 > 0

maxGramSize (default 1) -- 必须 >= minGramSize

side (default "front") -- "front" or "back"

示例:

输入:   babaloo

输出(default):   “b"

输出(minGramSize=2, maxGramSize=5):"ba", "bab", "baba", "babal"

8. solr.ICUTokenizerFactory

对多语言文本,基于其语言特性,进行恰当地分词。

参数:rulefile-- 此值的格式:  四个字母的语言代码+“:”+文件路径

<analyzer>
<tokenizer class="solr.ICUTokenizerFactory" rulefile="Latn:my.Latin.rule.rbbi,Cyrl:my.Cyrillic.rules.rbbi"/>
</analyzer>

注意:需要添加额外的jar包到Solr 的 classpath下。

9. solr.PathHierarchyTokenizerFactory

用replace指定的字符代替delimiter指定的字符,并进行分词

参数:delimiter (no default)

replace (no default)

示例:

<analyzer>
<tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="\" replace="/"/>
</analyzer>

输入:   d:\usr\local\apache

输出:   "d:", "d:/usr", "d:/usr/local", "d:/usr/local/apache"

10. solr.PatternTokenizerFactory

利用Java的正则表达式进行分词。

参数:pattern -- 必填

group --   可选。默认 -1 。

-1 表示正则表达式作为分割符。0 表示符合正则表达式的才会被认为是一个分词而保留。大于0的值(比如2)表示只保留符合正则表达式的部分中的第2个部分。

示例:

<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="\s*\s*" />
</analyzer>

输入:   fee,fie, foe , fun,  foo

输出:   "fee", "fie", "foe", "fun", "foo"

示例:

<analyzer>
<tokenizer class="solr.PatternTokenizerFactory" pattern="[A-Z][A-Za-z]*" group="0"/>
</analyzer>

输入:   Hello, My name is Rose.

输出:   "Hello", "My", "Rose"

11. solr.UAX29URLEmailTokenizerFactory

空格和标点符号做为分割符。小数点如果后面不是空格,则被保留。连接符(“-”)连起来的各个部分将被划分为独立的分词,除非其中包含数字。网址、Email、IP地址将会被认为一个整体。

参数:maxTokenLength -- 长度超过此值的分词将会被截断。

12. solr.WhitespaceTokenizerFactory

仅将空格做为分割符。

参数:rule -- "java": 默认值,利用Character.isWhitespace(int)确定是否是whitespace。 “unicode”: 利用Unicode的whitespace做为分割符。

Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) - Analyzer, tokenizer(4)的更多相关文章

  1. Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) -- 样例(6)

    managed-schema 样例: <?xml version="1.0" encoding="UTF-8" ?> <!-- License ...

  2. Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml) - filter(5)

    自定义fieldType时,通常还会用到filter.filter必须跟在tokenizer或其它filter之后.如: <fieldType> <analyzer> < ...

  3. Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml)(3)

         5. <fieldType> fieldType主要定义了一些字段类型,其name属性值用于前面<field>中的type属性的值.e.g. <fieldTyp ...

  4. Solr 6.7学习笔记(04)-- Suggest

    当我们使用baidu或者Google时,你输入很少的字符,就会自动跳出来一些建议选项,在Solr里,我们称之为Suggest,在solrconfig.xml里做一些简单的配置,即可实现这一功能.配置如 ...

  5. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  6. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  7. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  8. SaToken学习笔记-02

    SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...

  9. Redis:学习笔记-02

    Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...

  10. Solr 6.7学习笔记(02)-- 配置文件 managed-schema (schema.xml)(1)

    刚学Solr(版本6.7.0),新建一个core时,提示要求schema.xml文件,我找了半天也没在源码包中找到名为schema.xml的文件.这个版本其实用的是managed-schema文件,没 ...

随机推荐

  1. Java中Iterator的fast-fail分析

    1.fail-fast简介 fail-fast机制是java集合(Collection)中的一个错误机制.当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件. 例如:当某一个线 ...

  2. 【docker】开启remote api访问,并使用TLS加密

    背景: docker默认是能使用本地的socket进行管理,这个在集群中使用的时候很不方便,因为很多功能还是需要链接docker服务进行操作,docker默认也可以开启tcp访问,但是这就相当于把整个 ...

  3. Linux下监视GPU、CPU的使用情况

    1.在运行Tensorflow等程序时会使用到NVIDIA的GPU,所以在程序运行时需要监控GPU的运行情况 使用 nvidia-smi 命令 ,显示如下: nvidia-smi 显示解读: GPU: ...

  4. Allegro PCB中添加汉字

    注明出处:http://www.cnblogs.com/einstein-2014731/p/5650943.html Cadence用起来比AltiumDesigner要麻烦些,但是也更开放,更灵活 ...

  5. Tomcat 开启远程调试

    根据 Tomcat 启动方式在 catalina.sh 或者 startup.sh 添加一下内容 $TOMCAT_HOME/bin/catalina.sh 添加 CATALINA_OPTS=" ...

  6. 《机器学习实战》学习笔记第十三章 —— 利用PCA来简化数据

    相关博文: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) 主成分分析(PCA)的推导与解释 主要内容: 一.向量內积的几何意义 二.基的变换 三.协方差矩阵 四.PCA求解 一.向量內 ...

  7. Linux学习之路(一)命令基本格式

    据统计Linxu里面能够识别的命令超过3000个,而我们常用的Linux基本命令在60个左右.常用命令是我们必须掌握的命令,需要我们多练习才能记住,最起码要敲3遍以上. 简单的把常用命令分为以下几大类 ...

  8. 【详解】苹果AppStore审核被拒,原因终逃不过这些!

    近日,相信很多开发者都留意到了: 苹果针对应用标题的审核确有明显的变严趋势!我们在<惊!苹果再次加强审核力度,众App纷纷止步应用标题>中也对该现象进行了详细的分析,并给出了相应的解决方案 ...

  9. BZOJ 1640 [Usaco2007 Nov]Best Cow Line 队列变换:贪心【字典序最小】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1640 题意: 给你一个长度为n的字符串. 你可以将原串的首字母或尾字母移动到新串的末尾. ...

  10. Zabbix数据库清理历史数据

    Zabbix清理历史数据 Zabbix是个很好的监控软件,随着公司监控项目越来越多,数据越来越多,zabbix负载重,可能造成系统性能下降. Zabbix里面最大的表就是历史记录表,history,h ...