2019独角兽企业重金招聘Python工程师标准>>>

managed-schema 配置文件中指定了所有的fields及对应的分词器设置

对应的配置文件如下

Solr 中一个典型的分词器配置如下
先配置一个 field,如下


Field 对应的分词器,需要配置一个analyzer(一个fieldType下可以配置多个analyzer)

分析器(analyzer)是包括两个部分:分词器和过滤器。分词器顾名思意就是将句子分词单个的词,过滤器就是对分词的结果进行筛选,例如中文中将“的”“呀”这些对句子主体意思影响不大的词删除。英语中类似的就是"is","a"等等。通常在索引和分词两端应该采用同样的分词器。solr自带了一些分词器,如果你需要使用自己公司的分词器,那么就需要修改solr模式(Solr schema)。
schema.xml 文件允许两种方式修改文本被分析的方式,通常只有field类型为 solr.TextField 的field的内容允许定制分析器。

一个 analyzer 下指定一个TokenizerFactory ,后面跟一系列的TokenFilterFactories(它们将按照所列的顺序发生作用),Factories被用来创建分词器和分词过滤器,它们用于对分词器和分词过滤器的准备配置

需要说明的一点是,Any Analyzer, TokenizerFactory, or TokenFilterFactory 应该用带包名的全类名进行指定,请确保它们位于Solr的classpath 路径下。对于 org.apache.solr.analysis.* 包下的类,仅仅通过solr.*就可以进行指定。

TokenizerFactories

Solr提供了下列TokenizerFactories(Tokenizers and TokenFilters)
1. solr.KeywordTokenizerFactory
不管什么内容,整句当成一个关键字
例如: "http://example.com/I-am+example?Text=-Hello" ==> "http://example.com/I-am+example?Text=-Hello"

2. solr.LetterTokenizerFactory
根据字母来分词,抛弃非字母的部分
例如:"I can't" ==> "I", "can", "t"

3. solr.WhitespaceTokenizerFactory
根据空格来分词
例如:"I do" ==> "I", "do"

4. solr.LowerCaseTokenizerFactory
根据字母分词,并将所有字母转换成小写,抛弃非字母的部分
例如:"I can't" ==> "i", "can", "t"

5. solr.StandardTokenizerFactory
分词举例:  "I.B.M. cat's can't" ==> 
ACRONYM: "I.B.M.", APOSTROPHE:"cat's", APOSTROPHE:"can't"
说明:该分词器,会自动地给每个分词添加type,以便接下来的对type敏感的过滤器进行处理,目前仅仅只有StandardFilter对Token的类型是敏感的。

TokenFilterFactories

1. solr.StopFilterFactory
一些无用词过滤(例如: a, an, and, as, at, etc.),详细的在lang/stopwords_en.txt这个文件中有定义

2. solr.LowerCaseFilterFactory
大小写的转换的过滤器,会将所有的大小全部转换成小写单词

3. solr.EnglishPossessiveFilterFactory
估计是做一些单词的语义转换,例如,run可以对应到关联词 running等等

4. solr.KeywordMarkerFilterFactory
估计是做一些敏感词过滤之类的吧,敏感词的配置在protwords.txt这个文件中定义

参考:http://blog.csdn.net/dongnan591172113/article/details/23459637

分词示例:

通过solr api添加field和指定分词器(参考 schema api)
curl -X POST -H 'Content-type:application/json' --data-binary '{
    "add-field-type" : {
        "name":"myNewTxtField",
        "class":"solr.TextField",
        "positionIncrementGap":"100",
        "analyzer" : {
            "charFilters":[{
                "class":"solr.PatternReplaceCharFilterFactory",
                "replacement":"$1$1",
                "pattern":"([a-zA-Z])\\\\1+" 
            }],
            "tokenizer":{
                "class":"solr.WhitespaceTokenizerFactory" 
            },
            "filters":[{
                "class":"solr.WordDelimiterFilterFactory",
                "preserveOriginal":"0" 
            }]
        }
    }
}' http://localhost:8983/solr/gettingstarted/schema

转载于:https://my.oschina.net/u/174366/blog/683695

solr 分词过程基本介绍相关推荐

  1. Lucene.Net+盘古分词器(详细介绍)(转)

    Lucene.Net+盘古分词器(详细介绍)(转) Lucene.Net+盘古分词器(详细介绍) 本章阅读概要 1.Lucenne.Net简介 2.介绍盘古分词器 3.Lucene.Net实例分析 4 ...

  2. Java solr 分词

    代码如下: import java.io.IOException; import java.util.*;import org.apache.solr.client.solrj.SolrClient; ...

  3. Dockerfile 文件结构、docker镜像构建过程详细介绍

    [Docker那些事]系列文章 Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT指令的区别 构建Docker镜像指南,含实战 ...

  4. ansj词典加载及简洁分词过程

    ansj词典加载及简要分词过程 粗略看了点ansj源代码,记录备忘.   词典等配置文件加载类 (以调用 NlpAnalysis 分词类为例): 1,   MyStaticValue 初始化 NlpA ...

  5. Linux启动过程详细介绍

    Linux启动过程详细介绍 启动第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相 ...

  6. 跳频信号 matlab,time-frequency 关于跳频信号的时频分析过程,介绍的比较详细 matlab 259万源代码下载- www.pudn.com...

    文件名称: time-frequency下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 73 KB 上传时间: 2014-10-16 下载次数: 14 提 ...

  7. 【5G RRC】RSRP、RSRQ以及SINR含义、计算过程详细介绍

    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G ...

  8. ASPICE所有过程域介绍

    虽然题目叫所有过程域介绍,但其实不是我来介绍哈哈哈哈.发现了一个NB的链接包含了这些介绍,很适合用来做快速查询,如下: https://www.flecsim.de/images/download/A ...

  9. solr php 中文分词,solr分词以及搜索

    1. solr配置solrconfig.xml solrconfig.xml这个配置文件可以在你下载solr包的安装解压目录的D:\solr-4.10.4\example\solr\collectio ...

最新文章

  1. 大数据时代的网络视频营销
  2. 用JavaScript实现函数重载
  3. 2015蓝桥杯省赛---java---B---2(立方变自身)
  4. 工作180:前端是业务需求理解
  5. Serverless 在大规模数据处理中的实践
  6. 尚学堂java 答案解析 第四章
  7. 树莓派安装python2.7_树莓派3 + raspbian lite + OpenCV 3 环境搭建
  8. vc++画线段的函数_专题:精选中考数学压轴题5道,函数综合,内含解题秘籍
  9. php解析json里的hson_这种json字符串PHP如何解析?
  10. JAVA 中序遍历的非递归栈实现
  11. System V 共享内存 和 系列函数
  12. 通俗编程——白话NIO之Buffer
  13. GeoTools——新建shapefile文件
  14. 【发现趣味】要你命三千——老代码中的那些坑
  15. V5Shop网店系统更新 版本V8.30.0606 RC1
  16. linux 声音设置,Linux aumix设置音效装置命令详解
  17. 程序员微信名昵称_2020最火的微信名有哪些 好听的微信名字推荐
  18. 未群发消息接腾讯服务器吗,腾讯企点如何群发消息 腾讯企点群发消息方法教程...
  19. win10下安装php7.2的memcache扩展
  20. Windows Server 2008的介绍及其与Windows Server 2008 R2的区别

热门文章

  1. 使用SSH框架实现用户登录验证
  2. Proximal Algorithms 3 Interpretation
  3. Spring Cloud 微服务开发系列整理
  4. RedMonk 语言排行:Kotlin 上升 8 位,TS 快进前 10
  5. SQL*PLUS常用命令
  6. 分析智能卡的ATR格式【转】
  7. python基础之day1
  8. [Lua]50行代码的解释器,用来演示lambda calculus
  9. MockDialog
  10. Samba的主配置文件