设为首页 收藏本站
查看: 1196|回复: 0

[经验分享] solr分词以及搜索

[复制链接]

尚未签到

发表于 2018-11-1 11:07:29 | 显示全部楼层 |阅读模式
  1、 solr配置solrconfig.xml
  solrconfig.xml这个配置文件可以在你下载solr包的安装解压目录的D:\solr-4.10.4\example\solr\collection1\conf中找到,这个配置文件内容有点多,主要内容有:使用的lib配置,包含依赖的jar和Solr的一些插件;组件信息配置;索引配置和查询配置,下面详细说一下索引配置和查询配置.
  2、索引indexConfig
  Solr 性能因素,来了解与各种更改相关的性能权衡。 表 1 概括了可控制 Solr 索引处理的各种因素:
属性描述useCompoundFile通过将很多 Lucene 内部文件整合到一个文件来减少使用中的文件的数量。这可有助于减少 Solr 使用的文件句柄数目,代价是降低了性能。除非是应用程序用完了文件句柄,否则 false 的默认值应该就已经足够。ramBufferSizeMB maxBufferedDocs在添加或删除文档时,为了减少频繁的更些索引,Solr会选缓存在内存中,当内存中的文件大于设置的值,才会更新到索引库。较大的值可使索引时间变快但会牺牲较多的内存。如两个值同时设置,满足一个就会进行刷新索引.mergeFactor决定低水平的 Lucene 段被合并的频率。较小的值(最小为 2)使用的内存较少但导致的索引时间也更慢。较大的值可使索引时间变快但会牺牲较多的内存。maxIndexingThreadsindexWriter生成索引时使用的最大线程数unlockOnStartupunlockOnStartup 告知 Solr 忽略在多线程环境中用来保护索引的锁定机制。在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新。将其设置为 true 可以禁用启动锁定,进而允许进行添加和更新。lockTypesingle: 在只读索引或是没有其它进程修改索引时使用。native: 使用操作系统本地文件锁,不能使用多个Solr在同一个JVM中共享一个索引。 simple :使用一个文本文件锁定索引。  3、 查询配置query
属性描述maxBooleanClauses最大的BooleanQuery数量. 当值超出时,抛出 TooManyClausesException.注意这个是全局的,如果是多个SolrCore都会使用一个值,每个Core里设置不一样的化,会使用最后一个的.filterCachefilterCache存储了无序的lucene document>4、Solr加入中文分词器  中文分词在solr里面是没有默认开启的,需要我们自己配置一个中文分词器。目前可用的分词器有smartcn,IK,Jeasy,庖丁。其实主要是两种,一种是基于中科院ICTCLAS的隐式马尔科夫HMM算法的中文分词器,如smartcn,ictclas4j,优点是分词准确度高,缺点是不能使用用户自定义词库;另一种是基于最大匹配的分词器,如IK ,Jeasy,庖丁,优点是可以自定义词库,增加新词,缺点是分出来的垃圾词较多。各有优缺点看应用场合自己衡量选择吧。
  下面给出两种分词器的安装方法,任选其一即可,推荐第一种,因为smartcn就在solr发行包的contrib/analysis-extras/lucene-libs/下,就是lucene-analyzers-smartcn-4.2.0.jar,首选在solrconfig.xml中加一句引用analysis-extras的配置,这样我们自己加入的分词器才会引到的solr中.
1212  如果不想写上面这种引入,也可以将该jar包放入solr的WEB-INF\lib下面也能达到同样的效果。
  4、 smartcn 分词器的安装
  首选将发行包的contrib/analysis-extras/lucene-libs/ lucene-analyzers-smartcn-4.2.0.jar复制到solr的WEB-INF\lib下面,打开/solr/mycore/conf/scheme.xml,编辑text字段类型如下,添加以下代码到scheme.xml中的相应位置,就是找到fieldType定义的那一段,在下面多添加这一段就好啦
  

  
      
  

  
        
  

  
        
  

  
      
  

  
      
  

  
         
  

  
        
  

  
      1234567891011121314151617181912345678910111213141516171819
  如果需要检索某个字段,还需要在scheme.xml下面的field中,添加指定的字段,用text_ smartcn作为type的名字,来完成中文分词。如 text要实现中文检索的话,就要做如下的配置:
11  5、 IK 分词器的安装
  首选要去下载IKAnalyzer的发行包.下载地址: http://ik-analyzer.googlecode.com/files/IK%20Analyzer%202012FF_hf1.zip.
  下载后解压出来文件中IKAnalyzer.cfg.xml、Stopword.dic放到solr的/WEB-INF/classes目录下(没有就创建classes文件夹),将IKAnalyzer2012FF_u1.jar放到solr的/WEB-INF/lib下面.
  IKAnalyzer2012FF_u1.jar 分词器jar包
  IKAnalyzer.cfg.xml 分词器配置文件
  Stopword.dic 分词器停词字典,可自定义添加内容
  完成后就可以像smartcn一样的进行配置scheme.xml了.
  
    1234512345
  现在来验证下是否添加成功,首先使用StartSolrJetty来启动solr服务,启动过程中如果配置出错,一般有两个原因:一是配置的分词器jar找不到,也就是你没有复制jar包到\solr\contrib\analysis-extras\lib目前下;二是分词器版本不对导致的分词器接口API不一样出的错,要是这个错的话就在检查分词器的相关文档,看一下支持的版本是否一样.
  如果在启动过程中没有报错的话说明配置成功了.我们可以进入到http://localhost:8080/solr地址进行测试一下刚加入的中文分词器.在首页的Core Selector中选择你配置的Croe后点击下面的Analysis,在Analyse Fieldname / FieldType里选择你刚才设置的字段名称或是分词器类型,在Field Value(index)中输入:中国人,点击右面的分词就行了.
  6、查询参数
  常用
  q - 查询字符串,必须的。
  fl - 指定返回那些字段内容,用逗号或空格分隔多个。
  start - 返回第一条记录在完整找到结果中的偏移位置,0开始,一般分页用。
  rows - 指定返回结果最多有多少条记录,配合start来实现分页。
  sort - 排序,格式:sort=”field name”+”desc|asc”[,”field name”+”desc|asc”]… 。示例:(inStock desc, price asc)表示先 “inStock” 降序, 再 “price” 升序,默认是相关性降序。
  wt - (writer type)指定输出格式,可以有 xml, json, PHP, phps, 后面 solr 1.3增加的,要用通知我们,因为默认没有打开。
  fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=mm&fq=date_time:[20081001 TO 20091031],找关键字mm,并且date_time是20081001到20091031之间的。官方文档:http://wiki.apache.org/solr/CommonQueryParameters
  不常用
  q.op - 覆盖schema.xml的defaultOperator(有空格时用”AND”还是用”OR”操作逻辑),一般默认指定
  df - 默认的查询字段,一般默认指定
  qt - (query type)指定那个类型来处理查询请求,一般不用指定,默认是standard。
  其它
  indent - 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。
  version - 查询语法的版本,建议不使用它,由服务器指定默认值。
  [Solr的检索运算符]
  “:” 指定字段查指定值,如返回所有值*:*
  “?”表示单个任意字符的通配
  “*” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)
  “~”表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。
  邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10
  “^”控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache
  布尔操作符AND、||
  布尔操作符OR、&&
  布尔操作符NOT、!、-(排除操作符不能单独与项使用构成查询)
  “+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在
  ( ) 用于构成子查询
  [] 包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710]
  {}不包含范围检索,如检索某时间段记录,不包含头尾
  date:{200707 TO 200710}
  ” 转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? : “



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629307-1-1.html 上篇帖子: Solr之Schema.xml配置 下篇帖子: 为solr增加用户验证
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表