Solr中StandardTokenizerFactory和KeywordTokenizerFactory之间的区别?

rav*_*dev 16 java solr tokenize solrnet

我是Solr的新手.我想知道何时使用StandardTokenizerFactoryKeywordTokenizerFactory

我阅读了Apache Wiki上的文档,但我没有得到它.

任何人都可以解释StandardTokenizerFactory和KeywordTokenizerFactory之间区别吗?

Jay*_*dra 31

StandardTokenizerFactory: -
它在空格上标记,以及剥离字符

文件: -

在标点字符处拆分单词,删除标点符号.但是,没有空格的点被视为令牌的一部分.除非在令牌中有数字,否则用连字符拆分单词.在这种情况下,整个令牌被解释为产品编号,不会被拆分.将电子邮件地址和Internet主机名识别为一个标记.

将其用于要搜索字段数据的字段.

例如 -

http://example.com/I-am+example?Text=-Hello
Run Code Online (Sandbox Code Playgroud)

将生成7个令牌(以逗号分隔) -

http,example.com,I,am,example,Text,Hello
Run Code Online (Sandbox Code Playgroud)

KeywordTokenizerFactory: -

Keyword Tokenizer根本不分割输入.
没有对字符串执行任何处理,整个字符串被视为单个实体.
这实际上没有做任何标记化.它将原始文本作为一个术语返回.

主要用于排序或分面要求,您希望在对多个单词进行过滤时匹配精确的构面并进行排序,因为排序不会对标记化字段起作用.

例如

http://example.com/I-am+example?Text=-Hello
Run Code Online (Sandbox Code Playgroud)

会生成一个令牌 -

http://example.com/I-am+example?Text=-Hello
Run Code Online (Sandbox Code Playgroud)

  • StandardTokenizerFactory不会在所有标点符号上拆分,例如包含撇号的单词(例如`````would`等)将保留. (2认同)