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

[经验分享] solr总结 第六部分:solr查询语法

[复制链接]

尚未签到

发表于 2016-12-14 10:02:32 | 显示全部楼层 |阅读模式
  1.基本查询语法


  • q:全文查询。schema.xml里面定义了如下两块。eg q=ibm即表示org_name或者org_weisite里面出现ibm的document都可以被匹配到。KeyWords查询就是这个参数。
    <!-- catchall field, containing all other searchable text fields (implemented
    via copyField further on in this schema  -->
    <field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
     
    <!-- copyField commands copy one field to another at the time a document
    is added to the index.  It's used either to index the same field differently,
    or to add multiple fields to the same field for easier/faster searching.  -->
    <copyField source="org_name" dest="text" />
    <copyField source="org_website" dest="text" />
     
  • fq:过滤查询参数。它和q一起使用。格式1:fq=field:X,eg q=ibm&fq=org_name:ibm,表示org_name或者org_website里面出现ibm并且org_name里面出现ibm的document。格式2:fq=field:[X TO X],区间查询,eg fq=org_id:[100 TO 200],表示org_id为100(包含)到200(包含)的所有document。给大家贴一段代码,你就知道什么类型的field才能进行区间查询。
    <!-- numeric field types that store and index the text
    value verbatim (and hence don't support range queries, since the
    lexicographic ordering isn't equal to the numeric ordering)
    -->
    <fieldType name="integer" class="solr.IntField" omitNorms="true"/>
    <fieldType name="long" class="solr.LongField" omitNorms="true"/>
    <fieldType name="float" class="solr.FloatField" omitNorms="true"/>
    <fieldType name="double" class="solr.DoubleField" omitNorms="true"/>

    <!-- Numeric field types that manipulate the value into
    a string value that isn't human-readable in its internal form,
    but with a lexicographic ordering the same as the numeric ordering,
    so that range queries work correctly.
    -->
    <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
    <fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
    <fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
    <fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
     
  • start:指定第一条记录在所有记录的位置。
  • rows:一次性取出多少条数据。start和rows一起使用用于分页。eg start=20&rows=10表示取20到30之间的数据,如果每页显示10条数据,那么这个结果就是第二页到第三页的数据了。
  • sort:用于排序。eg sort=org_name desc表示按org_name降序排序。注意,并不是所有的field都能排序的。如果schema.xml里面org_name被定义成text型,请问还能sort=org_name desc吗?不能,因为text类型定义的filter已经将org_name进行了切分,一个被切分后的field也就丧失了排序资格。
  • 其它的几种用的不多。就不说了。给出一个完整的url:http://localhost:8080/solr/core1/select?q=ibm&fq=org_name:ibm&fq=org_weisite:www.ibm.com&start=20&rows=30&sort=org_name desc。
  2.solr分布式


  • solr分布式可以分为两种:同一server不同索引库,不同server。在此,只讨论前一种。
  • http://localhost:8080/solr/core1/select?q=ibm&fq=org_name:ibm&fq=org_weisite:www.ibm.com&start=20&rows=30&sort=org_name desc。是查询core1索引库里面的数据,如果此时,有另外一索引库core2,其配置文件schema.xml与core1一样。通过http://localhost:8080/solr/core2/select?q=ibm&fq=org_name:ibm&fq=org_weisite:www.ibm.com&start=20&rows=30&sort=org_name desc可以查询到core2索引库的数据。
  • 如果要同时查询core1,core2,其语法是怎么样的呢?http://localhost:8080/solr/core1/select?q=ibm&fq=org_name:ibm&fq=org_weisite:www.ibm.com&start=20&rows=30&sort=org_name desc&shards=localhost:8080/solr/core1,localhost:8080/solr/core2。


  • 这个时候还是取10条数据。怎么取?实际上有四个步骤:1)从core1里面取匹配到的30条(rows)数据,已经排好序。2)从core2里面取匹配到的30条数据,已经排好序。3)合并这60条数据,重新排序。4)取20到30之间的10条。
  • 给出一个url以及后台信息,有兴趣的可以研究下。http://192.168.1.110:3033/solr/company_activity_log/select?q=ibm&sort=pal_date+desc&fq=(pal_type:[50+TO+60]+AND+allmemids:\-1)+OR+pal_type:[1+TO+40]+OR+pal_type:[510+TO+699]+OR+pal_type:[2010+TO+2030]&start=20&rows=50&shards=192.168.1.110:3033/solr/company_activity_log,192.168.1.110:3033/solr/people_activity_log,192.168.1.110:3033/solr/buznews
    INFO: [people_activity_log] webapp=/solr path=/select params={fl=recordid&sort=pal_date+desc&start=0&q=ibm&isShard=true&wt=javabin&fq=(pal_type:[50+TO+60]+AND+allmemids:\-1)+OR+pal_type:[1+TO+40]+OR+pal_type:[510+TO+699]+OR+pal_type:[2010+TO+2030]&fsv=true&rows=70&version=1} hits=4 status=0 QTime=1
    Mar 24, 2011 3:37:56 PM org.apache.solr.core.SolrCore execute
    INFO: [buznews] webapp=/solr path=/select params={fl=recordid&sort=pal_date+desc&start=0&q=ibm&isShard=true&wt=javabin&fq=(pal_type:[50+TO+60]+AND+allmemids:\-1)+OR+pal_type:[1+TO+40]+OR+pal_type:[510+TO+699]+OR+pal_type:[2010+TO+2030]&fsv=true&rows=70&version=1} hits=1955 status=0 QTime=2
    Mar 24, 2011 3:37:56 PM org.apache.solr.core.SolrCore execute
    INFO: [company_activity_log] webapp=/solr path=/select params={fl=recordid&sort=pal_date+desc&start=0&q=ibm&isShard=true&wt=javabin&fq=(pal_type:[50+TO+60]+AND+allmemids:\-1)+OR+pal_type:[1+TO+40]+OR+pal_type:[510+TO+699]+OR+pal_type:[2010+TO+2030]&fsv=true&rows=70&version=1} hits=1 status=0 QTime=0
    Mar 24, 2011 3:37:56 PM org.apache.solr.core.SolrCore execute
    INFO: [buznews] webapp=/solr path=/select params={start=20&q=ibm&ids=news.1845018,news.1857975,news.1849705,news.1845017,news.1847219,news.1856408,news.1856584,news.1851627,news.1856105,news.1858456,news.1850005,news.1844890,news.1854864,news.1847360,news.1844998,news.1854711,news.1847708,news.1846403,news.1856387,news.1855993,news.1856216,news.1856595,news.1849931,news.1856117,news.1843249,news.1858277,news.1844969,news.1851645,news.1847030,news.1858666,news.1856324,news.1849897,news.1856170,news.1849323,news.1856563,news.1857434,news.1843233,news.1843235,news.1858766,news.1858015,news.1858014,news.1849353,news.1856365,news.1849354,news.1858016,news.1849629,news.1855972,news.1847282,news.1847346,news.1856573&isShard=true&wt=javabin&fq=(pal_type:[50+TO+60]+AND+allmemids:\-1)+OR+pal_type:[1+TO+40]+OR+pal_type:[510+TO+699]+OR+pal_type:[2010+TO+2030]&rows=50&version=1} status=0 QTime=2
    Mar 24, 2011 3:37:56 PM org.apache.solr.core.SolrCore execute
    INFO: [company_activity_log] webapp=/solr path=/select params={shards=192.168.1.110:3033/solr/company_activity_log,192.168.1.110:3033/solr/people_activity_log,192.168.1.110:3033/solr/buznews&sort=pal_date+desc&start=20&q=ibm&fq=(pal_type:[50+TO+60]+AND+allmemids:\-1)+OR+pal_type:[1+TO+40]+OR+pal_type:[510+TO+699]+OR+pal_type:[2010+TO+2030]&rows=50} status=0 QTime=30

     
  3.solr为我们提供了许多复杂的查询语法。更详细的资料,请参考solr wikihttp://wiki.apache.org/solr/FrontPage#solr_development 。

运维网声明 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-314130-1-1.html 上篇帖子: solr项目流程 下篇帖子: lucence和solr
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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