Solr 在项目中的使用

 

Created by 陈琦 [acking]

2018-06-12

APACHE SOLR™ 7.3.1

Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™.

Solr(读作“solar”)是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr 4还增加了NoSQL支持。

传送门>>

Solr WEB操作界面查询

传送门

Solr 常用查询一(Query)

Request-Handler (qt) [/select] //Request-Handler(qt): 要进行的操作(select\update\delete)

common


  • q [ *:* ] //使用标准查询语法定义的查询语句,必填
  • fq [ source:youku ] //指定用于对查询结果进行过滤的过滤器(也看作是一种query) eg: fq=price:[100 To *]&fq=setction:0
  • fq [ day:[2018-04-14T00:00:00Z TO 2018-04-15T00:00:00Z] ]
  • sort [ uid asc ] //定响应的排序方式:升序asc或降序desc.同时需要指定按哪个字段进行排序。eg: sort=price desc,score asc
  • start, rows [ 0, 10 ] //start指定显示查询结果的开始位置,默认是0 rows指定一次显示多少行查询结果,默认是10
  • fl [ channel day ] //指定查询结果中返回的字段,该字段的stored=”true”或docValues=”true” ,eg:fl=id,title,product(price, popularity)
  • df [ uid ] //默认查找的字段
  • Raw Query Parameters [ facet.field=primary_class ]
  • wt //执行响应的输出格式:xml或json等
  • indent //返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一般调试json,php,phps,ruby输出才有必要用这个参数。
  • debugQuery //设置返回结果是否显示Debug信息。

传送门

Solr 常用查询二(Query)

facet

  • facet.query [ source:toutiao ] //指定查询语句
  • facet.field [ category ] //代表根据字段分组查询,类似数据库的group by count的组合
  • ffacet.prefix [ facet.prefix ] //表示Facet字段值的前缀。比如facet.field=cpu&facet.prefix=Intel,那么对cpu字段进行Facet查询,返回的cpu都是以Intel开头的, AMD开头的cpu型号将不会被统计在内。

dismax

  • dismax参数用于处理用户输入的简单短语,并根据字段的重要度进行加权查询,查询范围为多个字段区域。dismax会忽略搜索字符串中的 "AND","OR", "+", "-". dismax中的详细参数默认可以在solrconfig.xml中设置。

hl

  • hl: high light 高亮。hl=true表示启用高亮
  • hl.fl : 用空格或逗号隔开的字段列表(指定高亮的字段)。要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高 亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。如果你使用了通配符,那么要考虑启用 hl.requiredFieldMatch选项。

传送门

Solr WEB操作界面

传送门

Cassandra中Cql查询工具

Cassandra中Cql使用Solr查询一

    
//常用cql查询
SELECT * FROM socialbakers.channelname where id = 'AcquadiParma_China';

//加入solr_query查询
SELECT * FROM socialbakers.channelname WHERE solr_query='id:"UMjQ2NDE1Mg=="' limit 3000;

//删除
//DELETE FROM socialbakers.channelname WHERE id = 'UMjQ2NDE1Mg';

//更新
//UPDATE socialbakers.channelname SET uid = '50287218' WHERE id = 'UMjAxMTQ4ODcy';

    

Cassandra中Cql使用Solr查询二

传送门

Cassandra中Solr索引重建

  • http://sh.dc.search-1.rechaos.com:8983/solr/admin/cores?action=UNLOAD&name=socialbakers.channelname&deleteDataDir=true&deleteResources=true
  • http://sh.dc.search-1.rechaos.com:8983/solr/admin/cores?action=CREATE&name=socialbakers.channelname&generateResources=true&reindex=true
  • 删除
  • action=UNLOAD
  • name=socialbakers.channelname
  • deleteDataDir=true
  • deleteResources=true
  • 创建
  • action=CREATE
  • name=socialbakers.channelname
  • generateResources=true
  • reindex=true

Q & A

THE END

Thank you!