摘要: Solr的过滤器对接收到的标记流(TokenStream )做额外的处理。参见原文
这个Filter将不属于ASCII(127个字符,包括英文字母,数字,常见符号)的字符转化成与ASCII 字符等价的字符。
没有参数。
例子:
<analyzer>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
输入: “á”
输出:“a”
这个Filter接受Classic Tokenizer
的结果,并处理首字母缩略词和所有格形式(英文中含有 ‘s 的形式)
例子:
<analyzer>
<tokenizer class="solr.ClassicTokenizerFactory"/>
<filter class="solr.ClassicFilterFactory"/>
</analyzer>
原始文本:“I.B.M. cat’s can’t”
输入: “I.B.M”, “cat’s”, “can’t”
输出:“IBM”, “cat”, “can’t”
这个Filter结合通用tokens来处理常用词。
参数 | 值 | 说明 |
---|---|---|
words | 以.txt结尾的文件 | 提供常用词库 |
format | 可选,例如”snowball” | 指定常用词列表的格式 |
ignoreCase | 布尔值,默认false | 是否忽略常用词大小写 |
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/>
</analyzer>
原始文本: “the Cat”
输入: “the”, “Cat”
输出: “the_cat”
将输入文本转化成指定范围大小的片段。
参数 | 值 | 说明 |
---|---|---|
minGramSize | 整数,默认1 | 指定最小的片段大小 |
maxGramSize | 整数,默认1 | 指定最大的片段大小 |
例如:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory"/>
</analyzer>
原始文本: “four score and twenty”
输入: “four”, “score”, “and”, “twenty”
输出: “f”, “s”, “a”, “t”
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="4"/>
</analyzer>
原始文本: “four score”
输入: “four”, “score”
输出: “f”, “fo”, “fou”, “four”, “s”, “sc”, “sco”, “scor”
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="4" maxGramSize="6"/>
</analyzer>
原始文本: “four score and twenty”
输入: “four”, “score”, “and”, “twenty”
输出: “four”, “scor”, “score”, “twen”, “twent”, “twenty”
这个Filter将英语中的复数处理成单数形式。
没有参数。
例子:
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory "/>
<filter class="solr.EnglishMinimalStemFilterFactory"/>
</analyzer>
原始文本: “dogs cats”
输入: “dogs”, “cats”
输出: “dog”, “cat”
这个Filter将不属于列表中的单词过滤掉。和Stop Words Filter
的效果相反。
参数 | 值 | 说明 |
---|---|---|
words | 必填,以.txt结尾的文件 | 提供保留词列表 |
ignoreCase | 布尔值,默认false | 是否忽略保留词列表大小写 |
enablePositionIncrements | 布尔值 | Solr5.0以后废弃 |
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.KeepWordFilterFactory" words="keepwords.txt"/>
</analyzer>
保留词列表keepwords.txt
happy
funny
silly
原始文本: “Happy, sad or funny”
输入: “Happy”, “sad”, “or”, “funny”
输出: “funny”
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.KeepWordFilterFactory" words="keepwords.txt" ignoreCase="true"/>
</analyzer>
保留词列表keepwords.txt
happy
funny
silly
原始文本: “Happy, sad or funny”
输入: “Happy”, “sad”, “or”, “funny”
输出: “Happy”, “funny”
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeepWordFilterFactory" words="keepwords.txt"/>
</analyzer>
保留词列表keepwords.txt
happy
funny
silly
原始文本: “Happy, sad or funny”
输入: “happy”, “sad”, “or”, “funny”
输出: “Happy”, “funny”
这个Filter处理在给定范围长度的tokens。
参数 | 值 | 说明 |
---|---|---|
min | 整数,必填 | 指定最小的token长度 |
max | 整数,必填,需大于min | 指定最大的token长度 |
enablePositionIncrements | 布尔值 | 从Solr5.0以后废弃 |
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LengthFilterFactory" min="3" max="7"/>
</analyzer>
原始文本: “turn right at Albuquerque”
输入: “turn”, “right”, “at”, “Albuquerque”
输出: “turn”, “right”
这个Filter将所有的大写字母转化为小写。
没有参数。
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
原始文本: “Down With CamelCase”
输入: “Down”, “With”, “CamelCase”
输出: “down”, “with”, “camelcase”
将输入文本转化成指定范围大小的片段。
参数 | 值 | 说明 |
---|---|---|
minGramSize | 整数,默认1 | 指定最小的片段大小 |
maxGramSize | 整数,默认2 | 指定最大的片段大小 |
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.NGramFilterFactory"/>
</analyzer>
原始文本: “four score”
输入: “four”, “score”
输出: “f”, “o”, “u”, “r”, “fo”, “ou”, “ur”, “s”, “c”, “o”, “r”, “e”, “sc”, “co”, “or”, “re”
例子2:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="4"/>
</analyzer>
原始文本: “four score”
输入: “four”, “score”
输出: “f”, “fo”, “fou”, “four”, “s”, “sc”, “sco”, “scor”
例子3:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="5"/>
</analyzer>
原始文本: “four score”
输入: “four”, “score”
输出: “fou”, “four”, “our”, “sco”, “scor”, “score”, “cor”, “core”, “ore”
这个Filter可以使用正则表达式来替换token的一部分内容,与正则表达式想匹配的被替换,不匹配的不变。
参数 | 值 | 说明 |
---|---|---|
pattern | 必填,正则表达式 | 需要匹配的正则表达式 |
replacement | 必填,字符串 | 需要替换的部分 |
replace | “all” 或 “first”, 默认”all” | 全部替换还是,只替换第一个 |
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="cat" replacement="dog"/>
</analyzer>
原始文本: “cat concatenate catycat”
输入: “cat”, “concatenate”, “catycat”
输出: “dog”, “condogenate”, “dogydog”
例子2:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="cat" replacement="dog" replace="first"/>
</analyzer>
原始文本: “cat concatenate catycat”
输入: “cat”, “concatenate”, “catycat”
输出: “dog”, “condogenate”, “dogycat”
例子3:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(\D+)(\d+)$" replacement="$1_$2"/>
</analyzer>
原始文本: “cat foo1234 9987 blah1234foo”
输入: “cat”, “foo1234”, “9987”, “blah1234foo”
输出: “cat”, “foo_1234”, “9987”, “blah1234foo”
这个Filter将首字母缩略词中的点号(如I.B.M处理为IBM)去除,将英文中的所有格形式中的's
除去(如stationer’s处理为stationer)。
没有参数。
在Solr3.1以后已经废弃。
这个Filter会在解析时忽略给定的停词列表(stopwords.txt)中的内容。
参数 | 值 | 说明 |
---|---|---|
words | 可选,停词列表 | 指定停词列表的路径 |
format | 可选,如”snowball” | 停词列表的格式 |
ignoreCase | 布尔值,默认false | 是否忽略大小写 |
enablePositionIncrements | 布尔值 | Solr5.0以后废弃 |
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt"/>
</analyzer>
保留词列表stopwords.txt
be
or
to
原始文本: “To be or what?”
输入: “To”(1), “be”(2), “or”(3), “what”(4)
输出: “To”(1), “what”(4)
例子2:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
</analyzer>
保留词列表stopwords.txt
be
or
to
原始文本: “To be or what?”
输入: “To”(1), “be”(2), “or”(3), “what”(4)
输出: “what”(4)
这个Filter用来处理同义词。
参数 | 值 | 说明 |
---|---|---|
synonyms | 必选,以.txt结尾的文件 | 指定同义词列表 |
ignoreCase | 布尔值,默认false | 是否忽略大小写 |
expand | 布尔值,默认true | TRUE:同义词将扩大至所有等价的同义词;FALSE:所有等价的同义词将相当于列表中的第一个。 |
format | 可选,默认solr | 指定解析同义词的策略 |
tokenizerFactory | 可选,默认WhitespaceTokenizerFactory | 指定解析同义词列表使用的tokenizer factory |
analyzer | 可选,默认WhitespaceTokenizerFactory | 指定使用的analyzer class |
注意,常用的同义词列表格式:
1. 以#
开头的行为注释内容,忽略
2. 以,
分隔的文本,为双向同义词,左右内容等价,互为同义词
3. 以=>
分隔的文本,为单向同义词,匹配到左边内容,将替换为右边内容,反之不成立
例子:
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="mysynonyms.txt"/>
</analyzer>
同义词列表synonyms.txt
couch,sofa,divan
teh => the
huge,ginormous,humungous => large
small => tiny,teeny,weeny
原始文本: “teh small couch”
输入: “teh”(1), “small”(2), “couch”(3)
输出: “the”(1), “tiny”(2), “teeny”(2), “weeny”(2), “couch”(3), “sofa”(3), “divan”(3)
原始文本: “teh ginormous, humungous sofa”
输入: “teh”(1), “ginormous”(2), “humungous”(3), “sofa”(4)
输出: “the”(1), “large”(2), “large”(3), “couch”(4), “sofa”(4), “divan”(4)
这个Filter以每个单词为分隔符。
参数 | 值 | 说明 | 举例 |
---|---|---|---|
generateWordParts | 整数,默认1 | 不为0的时候正常分词 | CamelCase -> “Camel”, “Case” |
generateNumberParts | 整数,默认1 | 不为0的时候可以分隔数字 | “1947-32” ->”1947”, “32” |
splitOnCaseChange | 整数,默认1 | 为0时,不处理驼峰拼写形式 | “BugBlaster-XL” -> “BugBlaster”,”XL” |
splitOnNumerics | 整数,默认1 | 为0时,不处理数字和单词组合的形式 | “FemBot3000” -> “Fem”, “Bot3000” |
catenateWords | 整数,默认0 | 不为0时,会将分析后的单词连接在一起 | “hot-spot-sensor’s” -> “hotspotsensor” |
catenateNumbers | 整数,默认0 | 不为0时,会将分析后的数字连接在一起 | 1947-32 -> “194732” |
catenateAll | 0或1,默认0 | 不为0时,会将分析后的单词、数字等连接在一起 | “Zap-Master-9000” -> “ZapMaster9000” |
preserveOriginal | 整数,默认0 | 不为0时,将保留原始的token | “Zap-Master-9000” -> “Zap-Master-9000”, “Zap”, “Master”, “9000” |
protected | 可选,路径名 | 某个文件的内容将不会分析 | |
stemEnglishPossessive | 整数,默认1 | 为1时,将除去's 形式 |
“O’Reilly’s” -> “O”, “Reilly” |
例子:
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory"/>
</analyzer>
原始文本: “hot-spot RoboBlaster/9000 100XL”
输入: “hot-spot”, “RoboBlaster/9000”, “100XL”
输出: “hot”, “spot”, “Robo”, “Blaster”, “9000”, “100”, “XL”
例子2:
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateNumberParts="0" splitOnCaseChange="0"/>
</analyzer>
原始文本: “hot-spot RoboBlaster/9000 100-42”
输入: “hot-spot”, “RoboBlaster/9000”, “100-42”
输出: “hot”, “spot”, “RoboBlaster”, “9000”,”100”,”42”
例子3:
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" catenateNumbers="1"/>
</analyzer>
原始文本: “hot-spot 100+42 XL40”
输入: “hot-spot”(1), “100+42”(2), “XL40”(3)
输出: “hot”(1), “spot”(2), “hotspot”(2), “100”(3), “42”(4), “10042”(4), “XL”(5), “40”(6)
例子4:
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" catenateAll="1"/>
</analyzer>
原始文本: “XL-4000/ES”
输入: “XL-4000/ES”(1)
输出: “XL”(1), “4000”(2), “ES”(3), “XL4000ES”(3)
例子5:
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" protected="protwords.txt"/>
</analyzer>
受保护词列表protwords.txt
AstroBlaster
XL-5000
原始文本: “FooBar AstroBlaster XL-5000 ==ES-34-”
输入: “FooBar”, “AstroBlaster”, “XL-5000”, “==ES-34-”
输出: “FooBar”, “AstroBlaster”, “XL-5000”, “ES”, “34”
文章浏览阅读1.6w次,点赞8次,收藏30次。1. Servlet 3.1Java EE 7 XML schema,命名空间是 http://xmlns.jcp.org/xml/ns/javaee/
文章浏览阅读4.5k次,点赞8次,收藏13次。登录 https://ai.youdao.com/login.s登录后第一步:我们先创建应用 业务指南 → 应用总览 → 创建应用应用名称:任意选择服务:自然语言翻译服务 → 文本翻译接入方式:API开通成功成功后点击小卡片,复制 “应用 ID” 和 “应用密钥”_zotero有道翻译密钥
文章浏览阅读891次。总结一下之前做的一个项目。项目简介:设计并实现一套基于LORA协议的无线传感器网络,将其运用到某酒厂,实现了白酒酿造过程中的数据智能感知和显示。职责贡献:负责硬件系统模块搭建和低功耗无线传感器数据采集,通过CN3791太阳能充电管理电路和DC/DC升压控制器提供稳定电压,在STM32平台上通过485协议完成数据采集,采用温湿度和光照度三合一传感器,将采集到的数据通过LORA协议完成远程实时传输,并通过RTC待机唤醒等方式降低系统功耗;参与无线传感器网络路由算法研究。低功耗控制策略:1、降低系统时_远程下发采集指令 单片机
文章浏览阅读1k次。保研老师推荐信12篇导语:对于保研,各位老师会有什么样的推荐信呢?下面是小编整理的保研老师推荐信12篇,供大家阅读,希望对大家有所帮助。保研老师推荐信 篇1本人是**大学**学院一名教授,很乐意推荐**同学参加贵所的暑期学术夏令营。在与该生的接触过程中可以发现,该生勤奋努力,踏实认真,积极主动,好的专业基本功和英语读写能力。该生在课堂上主动提问,表现出了好的总结分析能力和文字表达能力。思维活跃,工..._计算机保研推荐信
文章浏览阅读607次。GIS与BIM融合GIS与BIM融合GIS与BIM融合美国时间2017年11月15日,Esri和Autodesk在拉斯维加斯召开联盟发布会,正式宣布合作。通过此次合作,双方计划在BIM与GIS技术间建立桥梁,将建筑环境、自然环境、人和网络组织在一起并可视化表达,为各行各业提供更优的基础数据。两大巨头都是看准了BIM与GIS的融合的未来,其实这个问题一直都存在,这个需求一直都有,为什么直到现在都没有实现?下面有一张2014年来自FME公司对GIS背景人员针对BIM与GIS融合的调查,希望大家看完之后可_gis与bim融合咋来的
文章浏览阅读9.7k次。此代码可从https://github.com/TimeIvyace/Partial-Enlargement-of-Image.git中下载本算法简单的实现了图像局部放大的效果,算法需要确定放大区域的中心坐标点,以及放大圆形区域的半径和放大强度,来进行放大区域内的等比例放大,与美图秀秀的大眼功能类似。以人脸图像放大眼睛为例。在使用机器学习等算法得到人脸68个特征点的基础上,我们可以大致确定眼珠_matlab 图像放大后计算原坐标
文章浏览阅读159次。1 简介蝗虫算法( Grasshopper Optimization Algorithm,GOA ) 是 由 Saremi 等[1]于2017 年提出的一种元启发式仿生优化算法。具体原理如下:2 部分代码%_____________________________% Multi-objective Grasshopper Optimization Algorithm (MOGOA) source codes version 1.0%clc;clear;close _rem(dim, 2)
文章浏览阅读2k次,点赞2次,收藏7次。本文详述五个字典类型的表,分别为D_CPT(当前诊疗专用码编码表)、D_ICD_DIAGNOSES(疾病编码表)、D_ICD_PROCEDURES(手术编码表)、D_ITEMS(检查编码表)、D_LABITEMS(实验室检验编码表)。_mimic书库的变量词典
文章浏览阅读1.7w次。Using rqt_graphrqt_graph creates a dynamic graph of what's going on in the system. rqt_graph is part of therqt package. Unless you already have it installed, run:$ sudo apt-get install ros_rqt_plot怎么画出cmd_vel
文章浏览阅读5.3w次,点赞28次,收藏215次。目录1 git下载、安装与配置1.1下载与安装1.1.1登录git官网:Git (git-scm.com)点击击图中红线圈出的Downloads,进入下载页面。1.1.2根据自己系统,下载相应git软件(本人是win11)。1.1.3根据自己电脑,选择32位,或者64位的软件,本人选择64位安装版本。1.1.4下载完成后,运行安装软件,一路默认下去,完成安装(本人修改了安装路径,其他一路默认)。1.2 git配置1.2.1 在桌面空白处右键点击:Git Bas.._git下载
文章浏览阅读2.6k次。一、arr包的引用 在android 开发中我们除了引入jar包之外,有时候还会需要使用到arr包,那么既然有了jar为什么还要arr呢?这里就要说一下arr的不同了,arr包除了包含了字节码文件之外,还会包含一些资源文件,也就是说jar只不过是arr的一个子集而已。下面是正常的arr包引用步骤:1、复制arr文件到项目的libs中2、在build.gradle中配置依赖compil..._调用arr包中页面
文章浏览阅读4.7k次。提示{"errMsg":"config:ok"}{errMsg: "onMenuShareTimeline:ok"}{errMsg: "onMenuShareAppMessage"}原因很简单大佬,是不是你wx.config函数中debug为true;看到网上说什么的都有,其实问题就是这么简单,看文档看文档多看官网文档重要的事情说三遍 ~debug: f..._"errmsg: \"config:ok"