语言分析
本部分包含有关与字符集转换相关或用于特定语言的分词器和过滤器的信息。
对于欧洲语言,分词相当简单。标记由空格和/或一组相对较小的标点符号分隔。
在其他语言中,分词规则通常并不那么简单。某些欧洲语言也可能需要特殊的分词规则,例如德语单词的分解规则。
有关索引时语言检测的信息,请参阅语言检测。
KeywordMarkerFilterFactory
保护单词不被词干分析器修改。可以在 schema 中使用“protected”属性指定自定义的受保护单词列表。Solr 中的任何词干分析器都不会修改受保护单词列表中的任何单词。
可以在configset目录中找到带有注释的示例 Solr protwords.txt
。
带有名称
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer name="whitespace"/>
<filter name="keywordMarker" protected="protwords.txt" />
<filter name="porterStem" />
</analyzer>
</fieldtype>
带有类名(旧版)
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt" />
<filter class="solr.PorterStemFilterFactory" />
</analyzer>
</fieldtype>
KeywordRepeatFilterFactory
两次发出每个标记,一次带有KEYWORD
属性,一次不带。
如果置于词干分析器之前,结果是您将获得与词干分析后的标记在同一位置保留的未词干分析的标记。匹配原始确切词条的查询将获得更好的分数,同时仍保持词干分析的召回优势。保留原始标记的另一个好处是,通配符截断将按预期工作。
要配置,请在分析链的早期添加KeywordRepeatFilterFactory
。还建议包括RemoveDuplicatesTokenFilterFactory
,以避免在标记未词干分析时出现重复。
示例 fieldType 配置可能如下所示
带有名称
<fieldtype name="english_stem_preserve_original" class="solr.TextField">
<analyzer>
<tokenizer name="standard"/>
<filter name="keywordRepeat" />
<filter name="porterStem" />
<filter name="removeDuplicates" />
</analyzer>
</fieldtype>
带有类名(旧版)
<fieldtype name="english_stem_preserve_original" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.KeywordRepeatFilterFactory" />
<filter class="solr.PorterStemFilterFactory" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldtype>
在两次添加同一标记时,它也会得分两次(双倍),因此您可能必须重新调整排名规则。 |
StemmerOverrideFilterFactory
通过应用自定义映射覆盖词干算法,然后保护这些术语不被词干分析器修改。
可以在架构中的dictionary
属性中指定一个单词到词干的自定义映射,该映射采用制表符分隔的文件格式。此映射中的单词将被词干化为文件中的词干,并且不会被任何词干分析器进一步更改。
带有名称
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer name="whitespace"/>
<filter name="stemmerOverride" dictionary="stemdict.txt" />
<filter name="porterStem" />
</analyzer>
</fieldtype>
带有类名(旧版)
<fieldtype name="myfieldtype" class="solr.TextField">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StemmerOverrideFilterFactory" dictionary="stemdict.txt" />
<filter class="solr.PorterStemFilterFactory" />
</analyzer>
</fieldtype>
下面显示了一个示例stemdict.txt
文件
# these must be tab-separated
monkeys monkey
otters otter
# some crazy ones that a stemmer would never do
dogs cat
如果您在本地签出了 Solr 的源代码,您还可以在 Solr 的测试资源中找到此示例,路径为solr/core/src/test-files/solr/collection1/conf/stemdict.txt
。
词典复合词标记过滤器
此过滤器使用组件单词的词典将复合词拆分为单个单词,或分解复合词。每个输入标记都按原样传递。如果它还可以分解为子词,则每个子词也会在同一逻辑位置添加到流中。
复合词最常见于日耳曼语中。
工厂类: solr.DictionaryCompoundWordTokenFilterFactory
参数
dictionary
-
必需
默认值:无
包含简单单词列表的文件的路径,每行一个单词。空白行和以“#”开头的行将被忽略。
有关更多信息,请参阅 资源加载。
minWordSize
-
可选
默认值:
5
任何短于此长度的标记都不会被分解。
minSubwordSize
-
可选
默认值:
2
短于此长度的子词不会作为标记发出。
maxSubwordSize
-
可选
默认值:
15
长于此长度的子词不会作为标记发出。
onlyLongestMatch
-
可选
默认值:
true
如果为
true
,则只有最长的匹配子词才会生成新标记。
示例
假设germanwords.txt
至少包含以下单词:dumm kopf donau dampf schiff
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="dictionaryCompoundWord" dictionary="germanwords.txt"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DictionaryCompoundWordTokenFilterFactory" dictionary="germanwords.txt"/>
</analyzer>
输入:“Donaudampfschiff dummkopf”
标记器到过滤器:“Donaudampfschiff”(1),“dummkopf”(2),
输出:“Donaudampfschiff”(1),“Donau”(1),“dampf”(1),“schiff”(1),“dummkopf”(2),“dumm”(2),“kopf”(2)
Unicode 校对
Unicode 校对是一种对文本进行排序的语言敏感方法,也可用于高级搜索目的。
Solr 中的 Unicode 校对速度很快,因为所有工作都在索引时完成。
<fieldtype … class="solr.TextField">
中不再指定分析器,solr.CollationField
和 solr.ICUCollationField
字段类型类提供了此功能。solr.ICUCollationField
由 ICU4J 库 支持,它提供了更灵活的配置、更多的语言环境、更快的速度,并且需要更少的内存和更少的索引空间,因为其键比由支持 solr.CollationField
的 JDK 实现生成的键小。
要使用 solr.ICUCollationField
,您必须启用 analysis-extras 模块。
solr.ICUCollationField
和 solr.CollationField
字段可以通过两种方式创建
-
基于与语言环境关联的系统整理程序。
-
基于定制的
RuleBasedCollator
规则集。
ICUCollationField 属性
使用系统整理程序
语言环境
-
必需
默认值:无
RFC 3066 语言环境 ID。
强度
-
可选
默认值:无
有效值为
primary
、secondary
、tertiary
、quaternary
或identical
。有关详细信息,请参阅 ICU 校对概念中的比较级别。 分解
-
可选
默认值:无
有效值为
no
或canonical
。有关详细信息,请参阅 ICU 校对概念中的规范化。
使用定制的规则集
自定义
-
必需
默认值:无
包含 ICU
RuleBasedCollator
支持的规则的 UTF-8 文本文件的路径 强度
-
可选
默认值:无
有效值为
primary
、secondary
、tertiary
、quaternary
或identical
。有关详细信息,请参阅 ICU 校对概念中的比较级别。 分解
-
可选
默认值:无
有效值为
no
或canonical
。有关详细信息,请参阅 ICU 校对概念中的规范化。
专家选项
备用
-
可选
默认值:无
有效值为
shifted
或non-ignorable
。可用于忽略标点符号或空格。 大小写级别
-
可选
默认值:
false
如果为
true
,则与strength="primary"
结合使用,重音符号将被忽略,但会考虑大小写。有关详细信息,请参阅 ICU 校对概念中的大小写级别。 大小写优先
-
可选
默认值:无
有效值为
lower
或upper
。当不忽略大小写时,可用于控制哪种大小写优先排序。 数字
-
可选
默认值:
false
如果为
true
,则按数字值对数字进行排序,例如,foobar-9 排在 foobar-10 之前。 变量顶部
-
可选
默认值:无
单个字符或缩写。控制
alternate
的变量。
针对特定语言对文本进行排序
在此示例中,文本根据 ICU4J 提供的默认德语规则进行排序。
语言环境通常被定义为语言和国家/地区的组合,但如果你愿意,你只需指定语言即可。例如,如果你将“de”指定为语言,你将获得适用于德语的排序。如果你将“de”指定为语言,并将“CH”指定为国家/地区,你将获得专门针对瑞士定制的德语排序。
<!-- Define a field type for German collation -->
<fieldType name="collatedGERMAN" class="solr.ICUCollationField"
locale="de"
strength="primary" />
...
<!-- Define a field to store the German collated manufacturer names. -->
<field name="manuGERMAN" type="collatedGERMAN" indexed="false" stored="false" docValues="true"/>
...
<!-- Copy the text to this field. We could create French, English, Spanish versions too,
and sort differently for different users! -->
<copyField source="manu" dest="manuGERMAN"/>
在上面的示例中,我们将强度定义为“primary”。对照强度决定了排序顺序的严格程度,但它也取决于语言。例如,在英语中,“primary”强度忽略大小写和重音。
另一个示例
<fieldType name="polishCaseInsensitive" class="solr.ICUCollationField"
locale="pl_PL"
strength="secondary" />
...
<field name="city" type="text_general" indexed="true" stored="true"/>
...
<field name="city_sort" type="polishCaseInsensitive" indexed="true" stored="false"/>
...
<copyField source="city" dest="city_sort"/>
类型将用于数据包含波兰语文本的字段。“secondary”强度将忽略大小写差异,但与“primary”强度不同,带附加符号的字母将与没有附加符号的相同基础字母不同地进行排序。
使用“city_sort”字段进行排序的示例
q=*:*&fl=city&sort=city_sort+asc
针对多种语言对文本进行排序
有两种方法支持多种语言:如果你希望支持的语言列表较少,请考虑为每种语言定义整理后的字段并使用 copyField
。但是,添加大量排序字段会增加磁盘和索引成本。另一种方法是使用 Unicode default
对照器。
Unicode default
或 ROOT
语言环境具有适用于大多数语言的规则。要使用 default
语言环境,只需将语言环境定义为空字符串即可。此 Unicode 默认排序仍然比标准 Solr 排序高级得多。
<fieldType name="collatedROOT" class="solr.ICUCollationField"
locale=""
strength="primary" />
使用自定义规则对文本进行排序
你可以定义你自己的排序规则集。最简单的方法是采用接近你想要的内容的现有规则并对其进行自定义。
在下面的示例中,我们为德语创建了一个名为 DIN 5007-2 的自定义规则集。此规则集以不同的方式处理德语中的变音符号:它将 ö 视为与 oe 等效,将 ä 视为与 ae 等效,将 ü 视为与 ue 等效。有关更多信息,请参阅 ICU RuleBasedCollator javadocs。
此示例展示了如何为 solr.ICUCollationField
创建自定义规则集并将其转储到文件中
// get the default rules for Germany
// these are called DIN 5007-1 sorting
RuleBasedCollator baseCollator = (RuleBasedCollator) Collator.getInstance(new ULocale("de", "DE"));
// define some tailorings, to make it DIN 5007-2 sorting.
// For example, this makes ö equivalent to oe
String DIN5007_2_tailorings =
"& ae , a\u0308 & AE , A\u0308"+
"& oe , o\u0308 & OE , O\u0308"+
"& ue , u\u0308 & UE , u\u0308";
// concatenate the default rules to the tailorings, and dump it to a String
RuleBasedCollator tailoredCollator = new RuleBasedCollator(baseCollator.getRules() + DIN5007_2_tailorings);
String tailoredRules = tailoredCollator.getRules();
// write these to a file, be sure to use UTF-8 encoding!!!
FileOutputStream os = new FileOutputStream(new File("/solr_home/conf/customRules.dat"));
IOUtils.write(tailoredRules, os, "UTF-8");
此规则集现在可用于 Solr 中的自定义排序
<fieldType name="collatedCUSTOM" class="solr.ICUCollationField"
custom="customRules.dat"
strength="primary" />
JDK 排序
如上所述,ICU Unicode 排序在几个方面优于 JDK 排序,但如果您由于某种原因无法使用 ICU4J,则可以使用 solr.CollationField
。
JDK 排序的原理与 ICU 排序相同;您只需指定 language
、country
和 variant
参数,而不是组合的 locale
参数。
JDK 排序属性
使用系统排序器(请参阅 Oracle 支持的语言环境列表)
语言
-
必需
默认值:无
ISO-639 语言代码。
国家/地区
-
可选
默认值:无
ISO-3166 国家/地区代码。
变体
-
可选
默认值:无
供应商或特定于浏览器的代码。
强度
-
可选
默认值:无
有效值是
primary
、secondary
、tertiary
或identical
。有关更多信息,请参阅 Java Collator javadoc。 分解
-
可选
默认值:无
有效值是
no
、canonical
或full
。有关更多信息,请参阅 Java Collator javadoc。
使用定制的规则集:
自定义
-
必需
默认值:无
包含
JDK RuleBasedCollator
支持的规则的 UTF-8 文本文件的路径。 强度
-
可选
默认值:无
有效值是
primary
、secondary
、tertiary
或identical
。有关更多信息,请参阅 Java Collator javadoc。 分解
-
可选
默认值:无
有效值是
no
、canonical
或full
。有关更多信息,请参阅 Java Collator javadoc。
solr.CollationField
示例<fieldType name="collatedGERMAN" class="solr.CollationField"
language="de"
country="DE"
strength="primary" /> <!-- ignore Umlauts and letter case when sorting -->
...
<field name="manuGERMAN" type="collatedGERMAN" indexed="false" stored="false" docValues="true" />
...
<copyField source="manu" dest="manuGERMAN"/>
ASCII 和十进制折叠过滤器
ASCII 折叠
此过滤器将不在前 127 个 ASCII 字符(“基本拉丁语”Unicode 块)中的字母、数字和符号 Unicode 字符转换为其 ASCII 等效项(如果存在)。只有那些有合理 ASCII 替代项的字符才会被转换。
这可以通过导致更多匹配来增加召回率。另一方面,它可能会降低准确度,因为可能会丢失特定于语言的字符差异。
工厂类: solr.ASCIIFoldingFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="asciiFolding"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
输入: “Björn Ångström”
分词器到过滤器: “Björn”、“Ångström”
输出: “Bjorn”、“Angstrom”
十进制数字折叠
此过滤器将 Unicode “十进制数字”常规类别 (Nd
) 中的任何字符转换为其等效的基本拉丁语数字 (0-9)。
这可以通过导致更多匹配来增加召回率。另一方面,它可能会降低准确度,因为可能会丢失特定于语言的字符差异。
工厂类: solr.DecimalDigitFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="decimalDigit"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.DecimalDigitFilterFactory"/>
</analyzer>
OpenNLP 集成
Lucene 模块 lucene/analysis/opennlp
通过多个分析组件提供 OpenNLP 集成:一个标记器、一个词性标注过滤器、一个短语块过滤器和一个词形还原过滤器。除了这些分析组件之外,Solr 还提供一个更新请求处理器来提取命名实体。另请参阅 可作为插件加载的更新处理器工厂。
由于两个原因,OpenNLP 标记器 必须与所有其他 OpenNLP 分析组件一起使用。首先,OpenNLP 标记器检测并标记所有 OpenNLP 过滤器所需的句子边界。其次,由于这些过滤器使用的预训练 OpenNLP 模型是使用相应的语言特定句子检测/标记化模型训练的,因此在运行时必须使用相同模型进行相同的标记化才能获得最佳性能。 |
要使用 OpenNLP 组件,您必须启用 analysis-extras 模块。
OpenNLP 标记器
OpenNLP 标记器将两个语言特定二进制模型文件作为参数:一个句子检测器模型和一个标记器模型。每个句子中的最后一个标记被标记,以便后续基于 OpenNLP 的过滤器可以使用此信息一次对一个句子的标记应用操作。请参阅 OpenNLP 网站,了解有关下载预训练模型的信息。
工厂类: solr.OpenNLPTokenizerFactory
参数
示例
带有名称
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
</analyzer>
OpenNLP 词性过滤器
此过滤器将每个标记的类型属性设置为配置模型分配的词性 (POS)。请参阅 OpenNLP 网站,了解有关下载预训练模型的信息。
Lucene 目前不索引标记类型,因此,如果您想保留此信息,则必须将其保存在有效负载中或作为同义词;请参阅以下示例。 |
工厂类:solr.OpenNLPPOSFilterFactory
参数
posTaggerModel
-
必需
默认值:无
特定于语言的 OpenNLP POS 标记器模型文件的路径。有关更多信息,请参阅资源加载。
示例
OpenNLP 分词器将对标点符号进行分词,这对于后续的标记过滤器很有用。通常,您不希望在索引中包含标点符号,因此,以下示例中包含TypeTokenFilter
,其中 stop.pos.txt
包含以下内容
#
$
''
``
,
-LRB-
-RRB-
:
.
将每个标记的 POS 作为有效负载进行索引
带有名称
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="typeAsPayload"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter class="solr.OpenNLPPOSFilterFactory" posTaggerModel="en-pos-maxent.bin"/>
<filter class="solr.TypeAsPayloadFilterFactory"/>
<filter class="solr.TypeTokenFilterFactory" types="stop.pos.txt"/>
</analyzer>
在每个标记的 POS 前加上“@”后,将每个标记的 POS 作为同义词进行索引(请参阅TypeAsSynonymFilter 说明)
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="typeAsSynonym" prefix="@"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
仅索引名词 - keep.pos.txt
文件包含行 NN
、NNS
、NNP
和 NNPS
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="type" types="keep.pos.txt" useWhitelist="true"/>
</analyzer>
OpenNLP 短语块划分过滤器
此过滤器基于 OpenNLP 短语块划分模型的输出设置每个标记的类型属性。块标签替换之前每个标记的类型属性中的 POS 标记。有关下载预训练模型的信息,请参阅OpenNLP 网站。
先决条件:OpenNLP 分词器和OpenNLP 词性过滤器必须在此过滤器之前。
Lucene 目前不索引标记类型,因此,如果您想保留此信息,则必须将其保存在有效负载中或作为同义词;请参阅以下示例。 |
工厂类:solr.OpenNLPChunkerFilterFactory
参数
chunkerModel
-
必需
默认值:无
特定于语言的 OpenNLP 短语块划分模型文件的路径。有关更多信息,请参阅资源加载。
示例:
将每个标记的短语块标签作为有效负载进行索引
带有名称
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="openNLPChunker" chunkerModel="en-chunker.bin"/>
<filter name="typeAsPayload"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter class="solr.OpenNLPPOSFilterFactory" posTaggerModel="en-pos-maxent.bin"/>
<filter class="solr.OpenNLPChunkerFilterFactory" chunkerModel="en-chunker.bin"/>
<filter class="solr.TypeAsPayloadFilterFactory"/>
</analyzer>
在每个标记的短语块标签前加上“#”后,将每个标记的短语块标签作为同义词进行索引(请参阅TypeAsSynonymFilter 说明)
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="openNLPChunker" chunkerModel="en-chunker.bin"/>
<filter name="typeAsSynonym" prefix="#"/>
</analyzer>
OpenNLP 词形还原过滤器
此过滤器使用词形还原替换每个标记的文本。支持基于词典的词形还原和基于模型的词形还原。如果同时配置了这两种方法,则首先尝试基于词典的词形还原,然后针对词汇量外的标记咨询基于模型的词形还原。有关下载预训练模型的信息,请参阅OpenNLP 网站。
工厂类:solr.OpenNLPLemmatizerFilter
参数
必须提供 dictionary
或 lemmatizerModel
,也可以同时提供两者 - 请参见以下示例
示例
执行基于词典的词形还原,并对词典外的标记进行基于模型的词形还原(有关使用 TypeTokenFilter
避免对标点符号编制索引的信息,请参见上面的 OpenNLP 词性过滤器 部分)
带有名称
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="oenNLPLemmatizer"
dictionary="lemmas.txt"
lemmatizerModel="en-lemmatizer.bin"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.OpenNLPTokenizerFactory"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter class="solr.OpenNLPPOSFilterFactory" posTaggerModel="en-pos-maxent.bin"/>
<filter class="solr.OpenNLPLemmatizerFilterFactory"
dictionary="lemmas.txt"
lemmatizerModel="en-lemmatizer.bin"/>
<filter class="solr.TypeTokenFilterFactory" types="stop.pos.txt"/>
</analyzer>
仅执行基于词典的词形还原
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="openNLPLemmatizer" dictionary="lemmas.txt"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
仅执行基于模型的词形还原,保留原始标记并以同义词的形式发出词形(请参见 KeywordRepeatFilterFactory 说明)
<analyzer>
<tokenizer name="openNLP"
sentenceModel="en-sent.bin"
tokenizerModel="en-tokenizer.bin"/>
<filter name="openNLPPOS" posTaggerModel="en-pos-maxent.bin"/>
<filter name="keywordRepeat"/>
<filter name="openNLPLemmatizer" lemmatizerModel="en-lemmatizer.bin"/>
<filter name="removeDuplicates"/>
<filter name="type" types="stop.pos.txt"/>
</analyzer>
特定语言的工厂
这些工厂均设计为与特定语言配合使用。此处涵盖的语言有
阿拉伯语
Solr 提供对 Light-10(PDF)词干提取算法的支持,而 Lucene 包含一个示例停用词列表。
此算法定义了字符规范化和词干提取,因此将它们拆分为两个过滤器以提供更大的灵活性。
工厂类:solr.ArabicStemFilterFactory
、solr.ArabicNormalizationFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="arabicNormalization"/>
<filter name="arabicStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ArabicNormalizationFilterFactory"/>
<filter class="solr.ArabicStemFilterFactory"/>
</analyzer>
孟加拉语
有两个专门用于处理孟加拉语的过滤器。它们使用 Lucene 类 org.apache.lucene.analysis.bn.BengaliNormalizationFilter
和 org.apache.lucene.analysis.bn.BengaliStemFilter
。
工厂类: solr.BengaliStemFilterFactory
、solr.BengaliNormalizationFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="bengaliNormalization"/>
<filter name="bengaliStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.BengaliNormalizationFilterFactory"/>
<filter class="solr.BengaliStemFilterFactory"/>
</analyzer>
标准化 - মানুষ
→ মানুস
词干提取 - সমস্ত
→ সমস্
巴西葡萄牙语
这是一个专门为提取葡萄牙语巴西方言的词干而编写的 Java 过滤器。它使用 Lucene 类 org.apache.lucene.analysis.br.BrazilianStemmer
。虽然该词干提取器可以配置为使用受保护词列表(不应提取词干),但此工厂不接受任何指定该列表的参数。
工厂类: solr.BrazilianStemFilterFactory
参数: 无
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="brazilianStem"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.BrazilianStemFilterFactory"/>
</analyzer>
输入:“praia praias”
分词器到过滤器:“praia”、“praias”
输出:“pra”、“pra”
保加利亚语
Solr 包含一个针对保加利亚语的轻量级词干提取器,遵循 此算法(PDF),而 Lucene 包含一个示例停用词列表。
工厂类: solr.BulgarianStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="bulgarianStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.BulgarianStemFilterFactory"/>
</analyzer>
加泰罗尼亚语
Solr 可以使用 Snowball Porter 词干提取器提取加泰罗尼亚语的词干,参数为 language="Catalan"
。Solr 包含一组加泰罗尼亚语缩略语,可以使用 solr.ElisionFilterFactory
去除这些缩略语。
工厂类: solr.SnowballPorterFilterFactory
参数
语言
:
+
必需 |
默认值:无 |
+ 词干提取器语言,在本例中为 Catalan
。
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_ca.txt"/>
<filter class="solr.SnowballPorterFilterFactory" language="Catalan" />
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ElisionFilterFactory"
articles="lang/contractions_ca.txt"/>
<filter class="solr.SnowballPorterFilterFactory" language="Catalan" />
</analyzer>
输入:“llengües llengua”
分词器到过滤器:“llengües”(1) “llengua”(2),
输出:“llengu”(1)、“llengu”(2)
繁体中文
ICU 分词器 的默认配置适用于繁体中文文本。它遵循 Unicode 文本分段算法的单词拆分规则,用于非中文文本,并使用词典对中文单词进行分段。
要使用此分词器,您必须启用 analysis-extras 模块。
标准分词器 也可用于对繁体中文文本进行分词。遵循 Unicode 文本分段算法的单词拆分规则,它为每个中文字符生成一个标记。与 CJK 二元组过滤器 结合使用时,将形成中文字符的重叠二元组。
CJK 宽度过滤器 将全宽 ASCII 变体折叠成等效的基本拉丁形式。
示例
带有名称
<analyzer>
<tokenizer name="icu"/>
<filter name="cjkWidth"/>
<filter name="lowercase"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.ICUTokenizerFactory"/>
<filter class="solr.CJKWidthFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="cjkBigram"/>
<filter name="cjkWidth"/>
<filter name="lowercase"/>
</analyzer>
CJK 二元组过滤器
默认情况下,所有 CJK 字符都生成双字,但可以通过指定正字法类型参数 han
、hiragana
、katakana
和 hangul
来获得更精细的控制。当设置为 false
时,相应类型的字符将作为单字传递,并且不会包含在任何双字中。
当 CJK 字符没有相邻字符来形成双字时,它将以单字形式输出。如果您希望始终输出单字和双字,请将 outputUnigrams
参数设置为 true
。
在所有情况下,所有非 CJK 输入都将原样传递。
参数
han
-
可选
默认值:
true
如果为
false
,汉字(中文)字符不会形成双字。 hiragana
-
可选
默认值:
true
如果为
false
,平假名(日语)字符不会形成双字。 katakana
-
可选
默认值:
true
如果为
false
,片假名(日语)字符不会形成双字。 hangul
-
可选
默认值:
true
如果为
false
,韩文(韩语)字符不会形成双字。 outputUnigrams
-
可选
默认值:
false
如果为
true
,除了形成双字之外,所有字符还将作为单字传递。
请参阅繁体中文下的示例。
简体中文
对于简体中文,Solr 通过HMM 中文分词器提供对中文句子和单词分词的支持。此组件包含一个大型词典,并使用隐马尔可夫模型将中文文本分词为单词。要使用此分词器,您必须启用analysis-extras 模块。
ICU 分词器的默认配置也适用于简体中文文本。它遵循 Unicode 文本分词算法的单词断词规则(针对非中文文本),并使用词典对中文单词进行分词。要使用此分词器,您必须启用analysis-extras 模块。
也适用于中文分析
CJK 宽度过滤器将全角 ASCII 变体折叠成等效的基本拉丁形式,并将半角片假名变体折叠成等效的全角形式。
示例
带有名称
<analyzer>
<tokenizer name="hmmChinese"/>
<filter name="cjkWidth"/>
<filter name="stop"
words="org/apache/lucene/analysis/cn/smart/stopwords.txt"/>
<filter name="porterStem"/>
<filter name="lowercase"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.HMMChineseTokenizerFactory"/>
<filter class="solr.CJKWidthFilterFactory"/>
<filter class="solr.StopFilterFactory"
words="org/apache/lucene/analysis/cn/smart/stopwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="icu"/>
<filter name="cjkWidth"/>
<filter name="stop"
words="org/apache/lucene/analysis/cn/smart/stopwords.txt"/>
<filter name="lowercase"/>
</analyzer>
HMM 中文分词器
对于简体中文,Solr 在 `analysis-extras` 模块中通过 `solr.HMMChineseTokenizerFactory` 提供对中文句子和单词分词的支持。此组件包含一个大型词典,并使用隐马尔可夫模型将中文文本分词为单词。要使用此分词器,您必须启用 analysis-extras 模块。
工厂类: solr.HMMChineseTokenizerFactory
参数: 无
示例
要使用默认设置,并回退到英文单词的英文 Porter 词干分析器,请使用
<analyzer class="org.apache.lucene.analysis.cn.smart.SmartChineseAnalyzer"/>
或者,要配置您自己的分析设置,请将 `solr.HMMChineseTokenizerFactory` 与您的自定义过滤器设置一起使用。在 简体中文 部分中查看此示例。
捷克语
Solr 包含一个捷克语轻量词干分析器,遵循 此算法,而 Lucene 包含一个示例停用词列表。
工厂类: solr.CzechStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="czechStem"/>
<analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.CzechStemFilterFactory"/>
<analyzer>
输入:“prezidenští, prezidenta, prezidentského”
分词器到过滤器:“prezidenští”、“prezidenta”、“prezidentského”
输出:“preziden”、“preziden”、“preziden”
丹麦语
Solr 可以使用 Snowball Porter 词干分析器对丹麦语进行词干分析,参数为 `language="Danish"`。
还与 斯堪的纳维亚语归一化过滤器 相关。
工厂类: solr.SnowballPorterFilterFactory
参数
语言
-
必需
默认值:无
词干分析器语言,在本例中为 `Danish`。
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="snowballPorter" language="Danish" />
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Danish" />
</analyzer>
输入:“undersøg undersøgelse”
分词器到过滤器:“undersøg”(1) “undersøgelse”(2),
输出:“undersøg”(1), “undersøg”(2)
荷兰语
Solr 可以使用 Snowball Porter 词干分析器对荷兰语进行词干分析,参数为 `language="Dutch"`。
工厂类: solr.SnowballPorterFilterFactory
参数
语言
-
必需
默认值:无
词干分析器语言,在本例中为 `Dutch`。
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="snowballPorter" language="Dutch"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Dutch"/>
</analyzer>
输入:“kanaal kanalen”
分词器到过滤器:“kanaal”、“kanalen”
输出:“kanal”、“kanal”
爱沙尼亚语
Solr 可以使用 Snowball Porter 词干分析器对爱沙尼亚语进行词干分析,参数为 `language="Estonian"`。
工厂类: solr.SnowballPorterFilterFactory
参数
语言
-
必需
默认值:无
词干分析器语言,在本例中为 `Estonian`。
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="snowballPorter" language="Estonian"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Estonian"/>
</analyzer>
输入:“Taevani tõustes”
分词器到过滤器:“Taevani”、“tõustes”
输出:“taevani”、“tõus”
芬兰语
Solr 包含对芬兰语词干分析的支持,而 Lucene 包含一个示例停用词列表。
工厂类: solr.FinnishLightStemFilterFactory
参数: 无
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="finnishLightStem"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.FinnishLightStemFilterFactory"/>
</analyzer>
输入:“kala kalat”
分词器到过滤器:“kala”、“kalat”
输出:“kala”、“kala”
法语
省略过滤器
从标记流中移除冠词省略。此过滤器可用于法语、加泰罗尼亚语、意大利语和爱尔兰语等语言。
工厂类: solr.ElisionFilterFactory
参数
冠词
-
可选
默认值:无
包含要剥离的文章列表(每行一篇)的文件路径名。文章是诸如“le”之类的单词,通常缩写,例如l’avion(飞机)。此文件应包含缩写形式,它位于撇号之前。在本例中,只需“l”。如果未指定
articles
属性,则使用一组默认的法语文章。 ignoreCase
-
可选
默认值:
false
如果为
true
,则该过滤器在将单词与常用单词文件进行比较时会忽略单词的大小写。
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="elision"
ignoreCase="true"
articles="lang/contractions_fr.txt"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ElisionFilterFactory"
ignoreCase="true"
articles="lang/contractions_fr.txt"/>
</analyzer>
输入:“L’histoire d’art”
要过滤的分词器:“L’histoire”、“d’art”
输出:“histoire”、“art”
法语轻型词干过滤器
Solr 为法语包含三个词干提取器:一个在 solr.SnowballPorterFilterFactory
中,一个名为 solr.FrenchLightStemFilterFactory
的轻型词干提取器,以及一个名为 solr.FrenchMinimalStemFilterFactory
的更不激进的词干提取器。Lucene 包含一个示例停用词列表。
工厂类: solr.FrenchLightStemFilterFactory
、solr.FrenchMinimalStemFilterFactory
参数: 无
示例
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_fr.txt"/>
<filter name="frenchLightStem"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_fr.txt"/>
<filter name="frenchMinimalStem"/>
</analyzer>
输入:“le chat, les chats”
要过滤的分词器:“le”、“chat”、“les”、“chats”
输出:“le”、“chat”、“le”、“chat”
加利西亚语
Solr 包含一个用于加利西亚语的词干提取器,遵循此算法,而 Lucene 包含一个示例停用词列表。
工厂类: solr.GalicianStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="galicianStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.GalicianStemFilterFactory"/>
</analyzer>
输入:“felizmente Luzes”
要过滤的分词器:“felizmente”、“luzes”
输出:“feliz”、“luz”
德语
Solr 为德语包含四个词干提取器:一个在 solr.SnowballPorterFilterFactory language="German"
中,一个名为 solr.GermanStemFilterFactory
的词干提取器,一个名为 solr.GermanLightStemFilterFactory
的轻型词干提取器,以及一个名为 solr.GermanMinimalStemFilterFactory
的更不激进的词干提取器。Lucene 包含一个示例停用词列表。
工厂类: solr.GermanStemFilterFactory
、solr.LightGermanStemFilterFactory
、solr.MinimalGermanStemFilterFactory
参数: 无
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="germanStem"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.GermanStemFilterFactory"/>
</analyzer>
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="germanLightStem"/>
</analyzer>
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="germanMinimalStem"/>
</analyzer>
输入:“haus häuser”
要过滤的分词器:“haus”、“häuser”
输出:“haus”、“haus”
希腊语
此过滤器将希腊字符集中的大写字母转换为等效的小写字母。
工厂类: solr.GreekLowerCaseFilterFactory
参数: 无
自 Solr 3.1 起,不再支持使用自定义字符集。如果您需要以这些编码对文本进行索引,请在 I/O 期间使用 Java 的字符集转换工具(InputStreamReader 等),以便 Lucene 可以将此文本分析为 Unicode。 |
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="greekLowercase"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.GreekLowerCaseFilterFactory"/>
</analyzer>
印地语
Solr 包含对印地语词干分析的支持,遵循 此算法(PDF),通过 solr.HindiNormalizationFilterFactory
支持常见的拼写差异,通过 solr.IndicNormalizationFilterFactory
支持编码差异,遵循 此算法,Lucene 包含一个示例停用词列表。
工厂类: solr.IndicNormalizationFilterFactory
、solr.HindiNormalizationFilterFactory
、solr.HindiStemFilterFactory
参数: 无
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="indicNormalization"/>
<filter name="hindiNormalization"/>
<filter name="hindiStem"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.IndicNormalizationFilterFactory"/>
<filter class="solr.HindiNormalizationFilterFactory"/>
<filter class="solr.HindiStemFilterFactory"/>
</analyzer>
印度尼西亚语
Solr 包含对印度尼西亚语(Bahasa Indonesia)词干分析的支持,遵循 此算法(PDF),Lucene 包含一个示例停用词列表。
工厂类: solr.IndonesianStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="indonesianStem" stemDerivational="true" />
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.IndonesianStemFilterFactory" stemDerivational="true" />
</analyzer>
输入:“sebagai sebagainya”
分词器到过滤器:“sebagai”、“sebagainya”
输出:“bagai”、“bagai”
意大利语
Solr 包含两个意大利语词干分析器:一个在 solr.SnowballPorterFilterFactory language="Italian"
中,另一个是名为 solr.ItalianLightStemFilterFactory
的轻量词干分析器。Lucene 包含一个示例停用词列表。
工厂类: solr.ItalianStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="elision"
articles="lang/contractions_it.txt"/>
<filter name="italianLightStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ElisionFilterFactory"
articles="lang/contractions_it.txt"/>
<filter class="solr.ItalianLightStemFilterFactory"/>
</analyzer>
输入:“propaga propagare propagamento”
分词器到过滤器:“propaga”、“propagare”、“propagamento”
输出:“propag”、“propag”、“propag”
爱尔兰语
Solr 可以使用 Snowball Porter 词干分析器对爱尔兰语进行词干分析,参数为 language="Irish"
。Solr 包含 solr.IrishLowerCaseFilterFactory
,它可以处理爱尔兰语特定结构。Solr 还包含一组爱尔兰语缩略词,可以使用 solr.ElisionFilterFactory
将其剥离。
工厂类: solr.SnowballPorterFilterFactory
参数
语言
-
必需
默认值:无
词干分析器语言,本例中为
Irish
。
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="elision"
articles="lang/contractions_ga.txt"/>
<filter name="irishLowercase"/>
<filter name="snowballPorter" language="Irish" />
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ElisionFilterFactory"
articles="lang/contractions_ga.txt"/>
<filter class="solr.IrishLowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Irish" />
</analyzer>
输入:“siopadóireacht síceapatacha b’fhearr m’athair”
分词器到过滤器:“siopadóireacht”、“síceapatacha”、“b’fhearr”、“m’athair”
输出:“siopadóir”、“síceapaite”、“fearr”、“athair”
日语
Solr 包含对日语分析的支持,通过 Lucene Kuromoji 形态分析器,它包含几个分析组件 - 每个组件的更多详细信息如下
-
JapaneseIterationMarkCharFilter
将日语水平迭代标记(odoriji)标准化为其扩展形式。 -
JapaneseTokenizer
使用形态分析对日语进行分词,并使用词性、基本形式(又称词干)、读音和发音为每个术语添加注释。 -
JapaneseBaseFormFilter
会用基本形式(又称词干)替换原始术语。 -
JapanesePartOfSpeechStopFilter
会移除具有已配置词性的术语。 -
JapaneseKatakanaStemFilter
通过移除长音字符 (U+30FC) 来规范以长音字符结尾的常见片假名拼写变体。
同样适用于日语分析,来自 lucene-analyzers-common
-
CJKWidthFilter
会将全角 ASCII 变体折叠到等效的基本拉丁形式中,并将半角片假名变体折叠到等效的全角形式中。
日语迭字符 CharFilter
将日语水平迭字符(odoriji)规范为其展开形式。不支持垂直迭字符。
工厂类: JapaneseIterationMarkCharFilterFactory
参数
normalizeKanji
-
可选
默认值:
true
设为
false
以不规范化汉字迭字符。 normalizeKana
-
可选
默认值:
true
设为
false
以不规范化假名迭字符。
日语分词器
用于日语的分词器,使用形态分析,并用词性、基本形式(又称词干)、读法和发音对每个术语进行注释。
JapaneseTokenizer
具有 search
模式(默认),该模式执行对搜索有用的分词:使用启发式方法将复合术语分词为其组成部分,同时也将原始复合术语保留为同义词。
工厂类: solr.JapaneseTokenizerFactory
参数
mode
-
可选
默认值:无
使用
search
模式以获得对搜索有用的名词分解效果。search
模式会以牺牲词性准确性为代价来改善搜索分词。mode
的有效值为-
normal
:默认分词 -
search
:对搜索有用的分词(额外的复合拆分) -
extended
:搜索模式加上对未知单词的单字化(实验性)对于某些应用程序,最好对索引使用
search
模式,对查询使用normal
模式,以提高精确度并防止复合词的各个部分被匹配和高亮显示。
-
userDictionary
-
可选
默认值:无
用户词典的文件名,允许使用自己的条目覆盖统计模型,用于分词、词性标记和读数,而无需指定权重。请参阅
lang/userdict_ja.txt
以获取用户词典文件示例。 userDictionaryEncoding
-
可选
默认:
UTF-8
用户词典编码。
discardPunctuation
-
可选
默认值:
true
设为
false
以保留标点符号,设为true
以丢弃标点符号。 discardCompoundToken
-
可选
默认值:无
设为
false
以保留具有search
模式的原始复合标记,设为true
以丢弃。
日语基本形式过滤器
用对应的基本形式(词根)替换原始术语的文本。(JapaneseTokenizer
使用其基本形式注释每个术语。)
工厂类: JapaneseBaseFormFilterFactory
参数: 无
日语词性停止过滤器
移除具有已配置词性之一的术语。JapaneseTokenizer
使用词性注释术语。
工厂类 : JapanesePartOfSpeechStopFilterFactory
参数
标签
-
可选
默认值:无
要移除术语的词性列表的文件名。请参阅
sample_techproducts_config
configset 中的conf/lang/stoptags_ja.txt
以获取示例。
日语片假名词干过滤器
通过移除长音字符(U+30FC)来标准化以长音字符结尾的常见片假名拼写变体。
solr.CJKWidthFilterFactory
应在该过滤器之前指定,以将半角片假名标准化为全角。
工厂类: JapaneseKatakanaStemFilterFactory
参数
minimumLength
-
可选
默认值:
4
低于此长度的术语不会进行词干提取。值必须为
2
或更大。
CJK 宽度过滤器
将全角 ASCII 变体折叠到等效的基本拉丁形式中,并将半角片假名变体折叠到等效的全角形式中。
工厂类: CJKWidthFilterFactory
参数: 无
示例
带有名称
<fieldType name="text_ja" positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer>
<!-- Uncomment if you need to handle iteration marks: -->
<!-- <charFilter name="japaneseIterationMark" /> -->
<tokenizer name="japanese" mode="search" userDictionary="lang/userdict_ja.txt"/>
<filter name="japaneseBaseForm"/>
<filter name="japanesePartOfSpeechStop" tags="lang/stoptags_ja.txt"/>
<filter name="cjkWidth"/>
<filter name="stop" ignoreCase="true" words="lang/stopwords_ja.txt"/>
<filter name="japaneseKatakanaStem" minimumLength="4"/>
<filter name="lowercase"/>
</analyzer>
</fieldType>
带有类名(旧版)
<fieldType name="text_ja" positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer>
<!-- Uncomment if you need to handle iteration marks: -->
<!-- <charFilter class="solr.JapaneseIterationMarkCharFilterFactory" /> -->
<tokenizer class="solr.JapaneseTokenizerFactory" mode="search" userDictionary="lang/userdict_ja.txt"/>
<filter class="solr.JapaneseBaseFormFilterFactory"/>
<filter class="solr.JapanesePartOfSpeechStopFilterFactory" tags="lang/stoptags_ja.txt"/>
<filter class="solr.CJKWidthFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ja.txt"/>
<filter class="solr.JapaneseKatakanaStemFilterFactory" minimumLength="4"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
韩语
韩语(nori)分析器将 Lucene 的 nori 分析模块集成到 Solr 中。它使用 mecab-ko-dic 词典对韩语文本执行形态分析。
该词典是使用 MeCab 构建的,并定义了适用于韩语的特征格式。
Nori 还具有用户词典功能,该功能允许使用你自己的分词、词性标签和读音条目覆盖统计模型,而无需指定权重。
示例:
带有名称
<fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="korean" decompoundMode="discard" outputUnknownUnigrams="false"/>
<filter name="koreanPartOfSpeechStop" />
<filter name="koreanReadingForm" />
<filter name="lowercase" />
</analyzer>
</fieldType>
带有类名(旧版)
<fieldType name="text_ko" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.KoreanTokenizerFactory" decompoundMode="discard" outputUnknownUnigrams="false"/>
<filter class="solr.KoreanPartOfSpeechStopFilterFactory" />
<filter class="solr.KoreanReadingFormFilterFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
韩语分词器
工厂类:solr.KoreanTokenizerFactory
SPI 名称:korean
参数:
userDictionary
-
可选
默认值:无
指向用户提供的词典的路径,以将自定义名词或复合词添加到默认词典中。
userDictionaryEncoding
-
可选
默认值:无
用户词典的字符编码。
decompoundMode
-
可选
默认值:
discard
定义如何处理复合标记。选项有
-
none
:标记不分解。 -
discard
:标记分解,原始形式被丢弃。 -
mixed
:标记分解,原始形式被保留。
-
outputUnknownUnigrams
-
可选
默认值:
false
如果为
true
,将输出未知单词的单字。 discardPunctuation
-
可选
默认值:
true
如果为
true
,将丢弃标点符号。
希伯来语、老挝语、缅甸语、高棉语
除 UAX#29 分词规则外,Lucene 还支持希伯来语使用双引号和单引号字符,以及使用 analysis-extras
模块中的 solr.ICUTokenizerFactory
将老挝语、缅甸语和高棉语划分为音节。要使用此分词器,您必须启用 analysis-extras 模块。
有关更多信息,请参见 ICUTokenizer。
拉脱维亚语
Solr 包括对拉脱维亚语词干提取的支持,而 Lucene 包括一个示例停用词列表。
工厂类: solr.LatvianStemFilterFactory
参数: 无
示例
带有名称
<fieldType name="text_lvstem" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="latvianStem"/>
</analyzer>
</fieldType>
带有类名(旧版)
<fieldType name="text_lvstem" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.LatvianStemFilterFactory"/>
</analyzer>
</fieldType>
输入: "tirgiem tirgus"
分词器到过滤器: "tirgiem"、"tirgus"
输出: "tirg"、"tirg"
挪威语
Solr 包括两个用于对挪威语进行词干提取的类,NorwegianLightStemFilterFactory
和 NorwegianMinimalStemFilterFactory
。Lucene 包括一个示例停用词列表。
另一种选择是使用 Snowball Porter 词干提取器,并使用 language="Norwegian" 参数。
对于规范化,有一个 NorwegianNormalizationFilterFactory
,它是 斯堪的纳维亚语规范化过滤器 的一个变体,但折叠规则针对挪威语进行了调整。
挪威语轻量级词干提取器
NorwegianLightStemFilterFactory
需要对 -dom 和 -het 结尾进行“两遍”排序。这意味着在第一遍中,单词“kristendom”会被词干化成“kristen”,然后应用所有常规规则,因此它将进一步词干化成“krist”。这样做的效果是“kristen”、“kristendom”、“kristendommen”和“kristendommens”都将词干化成“krist”。
第二遍是选取 -dom 和 -het 结尾。考虑以下示例
一遍 | 两遍 | ||
---|---|---|---|
之前 |
之后 |
之前 |
之后 |
forlegen |
forleg |
forlegen |
forleg |
forlegenhet |
forlegen |
forlegenhet |
forleg |
forlegenheten |
forlegen |
forlegenheten |
forleg |
forlegenhetens |
forlegen |
forlegenhetens |
forleg |
firkantet |
firkant |
firkantet |
firkant |
firkantethet |
firkantet |
firkantethet |
firkant |
firkantetheten |
firkantet |
firkantetheten |
firkant |
工厂类: solr.NorwegianLightStemFilterFactory
参数
变体
-
可选
默认值:
nb
要使用的挪威语变体。有效值为
-
nb:
博克马尔语 -
nn:
新挪威语 -
no:
两者
-
示例
带有名称
<fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="stop" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
<filter name="norwegianLightStem"/>
</analyzer>
</fieldType>
带有类名(旧版)
<fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
<filter class="solr.NorwegianLightStemFilterFactory"/>
</analyzer>
</fieldType>
输入: “Forelskelsen”
分词器到过滤器: “forelskelsen”
输出: “forelske”
挪威语最小词干提取器
NorwegianMinimalStemFilterFactory
仅对挪威语名词的复数形式进行词干提取。
工厂类: solr.NorwegianMinimalStemFilterFactory
参数
变体
-
可选
默认值:
nb
要使用的挪威语变体。有效值为
-
nb:
博克马尔语 -
nn:
新挪威语 -
no:
两者
-
示例
<fieldType name="text_no" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="stop" ignoreCase="true" words="lang/stopwords_no.txt" format="snowball"/>
<filter name="norwegianMinimalStem"/>
</analyzer>
</fieldType>
输入: “Bilens”
分词器到过滤器: “bilens”
输出: “bil”
挪威语规范化过滤器
此过滤器通过将可互换的斯堪的纳维亚字符 æÆäÄöÖøØåÅ 及其折叠变体(ae、oe 和 aa)转换为 æÆøØåÅ 来规范化其使用。这是 ScandinavianNormalizationFilter
的一种变体,其折叠规则针对挪威语进行了定制。
工厂类: solr.NorwegianNormalizationFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="norwegianNormalization"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NorwegianNormalizationFilterFactory"/>
</analyzer>
输入: “blåbærsyltetøj blåbärsyltetöj blaabaarsyltetoej blabarsyltetoj”
分词器到过滤器: “blåbærsyltetøy”、“blåbärsyltetöy”、“blaabaersyltetoey”、“blabarsyltetoy”
输出: “blåbærsyltetøy”、“blåbærsyltetøy”、“blåbærsyltetøy”、“blabarsyltetoy”
波斯语
波斯语过滤器工厂
Solr 包含对波斯语规范化的支持,而 Lucene 包含一个示例停用词列表。
工厂类: solr.PersianNormalizationFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="arabicNormalization"/>
<filter name="persianNormalization"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ArabicNormalizationFilterFactory"/>
<filter class="solr.PersianNormalizationFilterFactory"/>
</analyzer>
波兰语
Solr 在 `analysis-extras` 模块中使用 `solr.StempelPolishStemFilterFactory` 提供波兰词干支持,并使用 `solr.MorphologikFilterFactory` 进行词形还原。`solr.StempelPolishStemFilterFactory` 组件包含波兰语的算法词干分析器。要使用此分词器,您必须启用 analysis-extras 模块。
工厂类:solr.StempelPolishStemFilterFactory
和 solr.MorfologikFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="stempelPolishStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StempelPolishStemFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="morfologik" dictionary="morfologik/stemming/polish/polish.dict"/>
<filter name="lowercase"/>
</analyzer>
输入:""studenta studenci"
分词器到过滤器:"studenta"、"studenci"
输出:"student"、"student"
可在 Lucene javadocs 中找到有关 Stempel 词干分析器的更多信息。
请注意,小写过滤器在 Morfologik 词干分析器之后应用;这是因为波兰语词典包含专有名词,因此正确的术语大小写对于解决歧义(甚至查找正确的词形)非常重要。
Morfologik 词典参数值是一个常量,用于指定要选择的词典。词典资源必须命名为 path/to/language.dict
,并具有关联的 .info
元数据文件。有关详细信息,请参阅 Morfologik 项目。如果未提供词典属性,则默认加载并使用波兰语词典。
葡萄牙语
Solr 包含四种葡萄牙语词干分析器:一种在 `solr.SnowballPorterFilterFactory` 中,一种称为 `solr.PortugueseStemFilterFactory` 的备用词干分析器,一种称为 `solr.PortugueseLightStemFilterFactory` 的轻量级词干分析器,以及一种称为 `solr.PortugueseMinimalStemFilterFactory` 的更不激进的词干分析器。Lucene 包含一个示例停用词列表。
工厂类:solr.PortugueseStemFilterFactory
、solr.PortugueseLightStemFilterFactory
、solr.PortugueseMinimalStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="portugueseStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PortugueseStemFilterFactory"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="portugueseLightStem"/>
</analyzer>
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="portugueseMinimalStem"/>
</analyzer>
输入:“praia praias”
分词器到过滤器:“praia”、“praias”
输出:“pra”、“pra”
罗马尼亚语
Solr 可以使用 Snowball Porter 词干分析器对罗马尼亚语进行词干分析,参数为 language="Romanian"
。
工厂类: solr.SnowballPorterFilterFactory
参数
语言
-
必需
默认值:无
词干分析器语言,在本例中为
Romanian
。
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="wnowballPorter" language="Romanian" />
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Romanian" />
</analyzer>
俄语
俄语词干过滤器
Solr 包含两种俄语词干分析器:一种在 `solr.SnowballPorterFilterFactory language="Russian" 中,一种称为 `solr.RussianLightStemFilterFactory` 的轻量级词干分析器。Lucene 包含一个示例停用词列表。
工厂类:solr.RussianLightStemFilterFactory
参数: 无
示例
带有名称
<analyzer type="index">
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="russianLightStem"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RussianLightStemFilterFactory"/>
</analyzer>
斯堪的纳维亚语
瑞典语中的 å、ä、ö 实际上与挪威语和丹麦语中的 å、æ、ø 相同,因此在这些语言之间使用时可以互换。但是,当人们在缺少这些字符的键盘上键入它们时,它们的折叠方式有所不同。
在这种情况下,几乎所有瑞典人都使用 a、a、o 代替 å、ä、ö。另一方面,挪威人和丹麦人通常键入 aa、ae 和 oe 代替 å、æ 和 ø。然而,有些人确实使用 a、a、o、oo、ao,有时还使用以上所有内容的排列。
有两种过滤器可以帮助实现斯堪的纳维亚语之间的规范化:一种是 solr.ScandinavianNormalizationFilterFactory
,它尝试保留特殊字符 (æäöå),另一种是 solr.ScandinavianFoldingFilterFactory
,它将这些字符折叠为更宽泛的 ø/ö → o 等。
另请参阅每种语言部分以了解其他相关过滤器。
斯堪的纳维亚语规范化过滤器
此过滤器通过将可互换的斯堪的纳维亚语字符 æÆäÄöÖøØ 和折叠变体 (aa、ao、ae、oe 和 oo) 转换为 åÅæÆøØ 来规范化使用。
与 ScandinavianFoldingFilter
相比,它是一种语义破坏性较小的解决方案,当使用挪威语或丹麦语键盘的人员查询瑞典语索引时最有用,反之亦然。此过滤器不执行 å 和 ä 到 a 的常见瑞典语折叠,也不执行 ö 到 o 的折叠。
工厂类: solr.ScandinavianNormalizationFilterFactory
参数: 无
示例
输入: “blåbærsyltetøj blåbärsyltetöj blaabaarsyltetoej blabarsyltetoj”
要过滤的分词器:“blåbærsyltetøj”、“blåbärsyltetöj”、“blaabaersyltetoej”、“blabarsyltetoj”
输出:“blåbærsyltetøj”、“blåbærsyltetøj”、“blåbærsyltetøj”、“blabarsyltetoj”
斯堪的纳维亚语折叠过滤器
此过滤器将斯堪的纳维亚语字符 åÅäæÄÆ → a 和 öÖøØ → o 折叠。它还禁止使用双元音 aa、ae、ao、oe 和 oo,只保留第一个。
与 ScandinavianNormalizationFilter
相比,它是一种语义破坏性更大的解决方案,但还可以帮助将 raksmorgas 与 räksmörgås 匹配。
工厂类: solr.ScandinavianFoldingFilterFactory
参数: 无
示例
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="scandinavianFolding"/>
</analyzer>
输入: “blåbærsyltetøj blåbärsyltetöj blaabaarsyltetoej blabarsyltetoj”
要过滤的分词器:“blåbærsyltetøj”、“blåbärsyltetöj”、“blaabaersyltetoej”、“blabarsyltetoj”
输出:“blabarsyltetoj”、“blabarsyltetoj”、“blabarsyltetoj”、“blabarsyltetoj”
塞尔维亚语
塞尔维亚语规范化过滤器
Solr 包含一个过滤器,可以规范化塞尔维亚语西里尔字母和拉丁字母。请注意,此过滤器仅适用于小写输入。
有关使用此过滤器的用户提示和建议,请参阅 Solr Wiki 中的 塞尔维亚语语言支持。
工厂类: solr.SerbianNormalizationFilterFactory
参数
理发
-
可选
默认值:
bald
选择标准化的范围。有效值是
-
bald
:西里尔字母首先转换为拉丁字母;然后,拉丁字母的变音符号将被移除,但 带划线的拉丁小写字母 D (U+0111) 除外,它将转换为“dj
” -
regular
:仅应用西里尔字母到拉丁字母的标准化,保留拉丁字母的变音符号
-
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="serbianNormalization" haircut="bald"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SerbianNormalizationFilterFactory" haircut="bald"/>
</analyzer>
西班牙语
Solr 包含两个西班牙语词干分析器:一个在 solr.SnowballPorterFilterFactory language="Spanish"
中,另一个更轻量的词干分析器称为 solr.SpanishLightStemFilterFactory
。Lucene 包含一个示例停用词列表。
工厂类: solr.SpanishStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="spanishLightStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SpanishLightStemFilterFactory"/>
</analyzer>
输入:“torear toreara torearlo”
分词器到过滤器:“torear”、“toreara”、“torearlo”
输出:“tor”、“tor”、“tor”
瑞典语
瑞典语词干过滤器
Solr 包含两个瑞典语词干分析器:一个在 solr.SnowballPorterFilterFactory language="Swedish"
中,另一个更轻量的词干分析器称为 solr.SwedishLightStemFilterFactory
。Lucene 包含一个示例停用词列表。
还与 斯堪的纳维亚语归一化过滤器 相关。
工厂类: solr.SwedishStemFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="lowercase"/>
<filter name="swedishLightStem"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.SwedishLightStemFilterFactory"/>
</analyzer>
输入:“kloke klokhet klokheten”
分词器到过滤器:“kloke”、“klokhet”、“klokheten”
输出:“klok”、“klok”、“klok”
泰语
此过滤器将泰语字符序列转换为单个泰语单词。与欧洲语言不同,泰语不使用空格来分隔单词。
工厂类: solr.ThaiTokenizerFactory
参数: 无
示例
带有名称
<analyzer type="index">
<tokenizer name="thai"/>
<filter name="lowercase"/>
</analyzer>
带有类名(旧版)
<analyzer type="index">
<tokenizer class="solr.ThaiTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
土耳其语
Solr 包含对土耳其语词干分析的支持,使用 solr.SnowballPorterFilterFactory
;对不区分大小写搜索的支持,使用 solr.TurkishLowerCaseFilterFactory
;对使用 solr.ApostropheFilterFactory
剥离撇号和后续后缀的支持(参见 撇号在土耳其信息检索中的作用);对通过 solr.TruncateTokenFilterFactory
截断令牌达到可配置最大长度的词干分析形式的支持(参见 土耳其语文本的信息检索);Lucene 包含一个示例停用词列表。
工厂类: solr.TurkishLowerCaseFilterFactory
参数: 无
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="apostrophe"/>
<filter name="turkishLowercase"/>
<filter name="snowballPorter" language="Turkish"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ApostropheFilterFactory"/>
<filter class="solr.TurkishLowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="Turkish"/>
</analyzer>
另一个示例,说明不区分变音符号的搜索
<analyzer>
<tokenizer name="standard"/>
<filter name="apostrophe"/>
<filter name="turkishLowercase"/>
<filter name="asciiFoldingFilterFactory" preserveOriginal="true"/>
<filter name="keywordRepeat"/>
<filter name="truncate" prefixLength="5"/>
<filter name="removeDuplicates"/>
</analyzer>
乌克兰语
Solr 在 analysis-extras
模块中通过 solr.MorphologikFilterFactory
提供对乌克兰语词形还原的支持。要使用此过滤器,您必须启用 analysis-extras 模块。
Lucene 还包含一个示例乌克兰语停用词列表,位于 lucene-analyzers-morfologik
jar 中。
工厂类: solr.MorfologikFilterFactory
参数
dictionary
-
必需
默认值:无
词形还原词典的路径。
lucene-analyzers-morfologik
jar 在org/apache/lucene/analysis/uk/ukrainian.dict
中包含一个乌克兰语词典。
示例
带有名称
<analyzer>
<tokenizer name="standard"/>
<filter name="stop" words="org/apache/lucene/analysis/uk/stopwords.txt"/>
<filter name="lowercase"/>
<filter name="morfologik" dictionary="org/apache/lucene/analysis/uk/ukrainian.dict"/>
</analyzer>
带有类名(旧版)
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="org/apache/lucene/analysis/uk/stopwords.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.MorfologikFilterFactory" dictionary="org/apache/lucene/analysis/uk/ukrainian.dict"/>
</analyzer>
Morfologik dictionary
参数值是一个指定要选择哪个词典的常量。词典资源必须命名为 path/to/language.dict
,并具有关联的 .info
元数据文件。有关详细信息,请参阅 Morfologik 项目。如果未提供词典属性,则默认加载和使用波兰语词典。