这节重点是讲Solr的查询相关的知识点 一、 查询参数说明 在做solr查询的时候,solr提供了很多参数来扩展它自身的强大功能!以下是使用频率最高的一些参数! ...如果查询所有*:* ,根据指定字段查询(Name:张三 AND Address:北京) fq - (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=Name:...官方的技术文档以及一些大神的博文日志,这里只是抛砖引玉】 二、 Solr运算符 1. “:” 指定字段查指定值,如返回所有值*:* 2. “?”...: 修饰符 字段名:查询关键词 AND/OR/NOT 修饰符 字段名:查询关键词 三、 Solr查询语法 1.最普通的查询,比如查询姓张的人( Name:张),如果是精准性搜索相当于SQL SERVER...:搜索条件),比如模糊查询( Name:张 OR Name:李 )单个字段多条件搜索不建议这样写,一般建议是在单个字段里进行条件筛选,如( Name:张 OR 李),多个字段查询(Name:张 + Address
对于平时简单的查询,一般使用like就能解决问题。如果字段值不连续,使用like就有点乏力了。 在工作中遇到这种业务,特整理如下文章,如果有更高效的解决方案,也望推荐互相学习。...4.现在业务大升级,需要查找 “苹果,猕猴” 这种不连续的数据,并且只要符合其中一个字段值,结果集就要包含其中。 对于这种查找,最直接想法:分割字符串,循环遍历去查询。...此业务首先源于数据库 设计如此,生成环境中”大量器件编号”通过逗号分隔存放在一个字段,前端参数顺序可变,所以产出此文章,也帮助遇到类似业务的朋友。...参照文章:http://www.cnblogs.com/end/archive/2011/02/17/1957011.html 4.原数据集inner join 字符串结果集,再查询inner join
问题描述 今天发现一个问题, Solr存储多值字段的时候, 需要显式的指定, 如CITY是单值字段, FACET_VALUES是多值字段, 需要这么写: Solr的索引分析 先看Solr生成的Lucene索引的字段类型信息: 图片 因为CITY和FACET_VALUES都是int类型, 唯一的区别就是单值和多值, 这里能看出来Lucene字段的类型确实不同...结合一下Solr的官方文档: 图片 可以看出根据官方描述, 单值用的NUMERIC类型, 多值用的SORTED_NUMERIC类型....好了, 到这里, 我们可以知道Solr里的单值和多值字段的底层区别是, 在Lucene存储时使用的doc values 类型不同. 单值的使用NUMERIC, 在luke中简称为number....所以可以得出结论, ES存储数值字段的时候, 默认都是多值的, 所以不需要指定.
: " 示例 查询所有 http://localhost:8080/solr/primary/select?...q=*:* 限定返回字段 http://localhost:8080/solr/primary/select?...q=*:*&fl=productId 表示:查询所有记录,只返回productId字段 分页 http://localhost:8080/solr/primary/select?...q=*:*&fl=productId&rows=6&start=0 表示:查询前六条记录,只返回productId字段 增加限定条件 http://localhost:8080/solr/primary...尽管如此,如果你的查询是all字段(可能是使用 copy-field 指令),那么还是把它设为false,这样搜索结果能表明哪个字段的查询文本未被找到 hl.usePhraseHighlighter:如果一个查询中含有短语
一、Solr的查询表单详解 ? Solr管理控制台的查询表单 所有与solr核心服务有关的交互,如查询处理,都是通过HTTP请求执行的。...score字段是内置字段,用于保存每个文档的查询相关度得分。必须显式地请求score字段,它才会返回。...查询表单不是为最终用户设计的,而是solr为开发者和管理员提供的一个查询提交途径。使用solr应用程序,需要为用户开发搜索界面。...二、Solr的搜索返回机制 前面介绍了Solr的查询请求提交,现在了解一下solr的搜索返回机制。...Solr还可以根据文档中的其他字段来进行排序。 排序和分页结合起来使用是因为排序决定了搜索结果在页面中的位置。如果文档的得分情况相同,那么Solr会以索引的次序来对文档进行排序。
其实我的需求就是:一个树状目录,每个目录下都存有成果,给定某一个上级目录id,分页查询出这个目录下以及子孙目录下的所有成果,要求分页。...一个字段匹配多值 这个是属于xorm中的: In(string, …interface{})某字段在一些值中,这里需要注意必须是[]interface{}才可以展开,由于Go语言的限制,[]int64等不可以直接展开...示例代码如下: engine.In("cloumn", 1, 2, 3).Find() engine.In("column", []int{1, 2, 3}).Find() 或者beego的sql原生语句查询...使用SQL语句进行查询 使用 Raw SQL 查询,无需使用 ORM 表定义 多数据库,都可直接使用占位符号 ?...,自动转换 查询时的参数,支持使用 Model Struct 和 Slice, Array ids := []int{1, 2, 3} p.Raw("SELECT name FROM user WHERE
一、问题描述 1、如何使用 SET 存储多个变量作为 WHERE 条件进行查询呢?...实现效果: SELECT * FROM t_table WHERE id IN (1,2,3,4,5); 2、MySQL使用 SET 可设置单个变量进行查询 正确语法: SET @id=1; SELECT...* FROM t_route_line WHERE id = @id; 3、MySQL如果使用 SET 设置多个变量进行查询?
本次实现效果: 小勤:对于按条件查询的问题,能不能再改善一下呢?比如现在的货品,有时候想一次查多个的,怎么办呢? 大海:那就做个多值查询的呗。...比如你可以在货品代码的查询条件里用顿号或分号之类的做分隔符输入多个货品代码,然后就一次查出来。 小勤:这样真是太赞了。但会不会很复杂啊?...大海:加几个函数就行,主要的思路就是根据分隔符把你的查询条件拆成一个列表(Text.Split),然后看数据里的货品代码是否在拆分出来的条件列表里(Text.Contains)。...咱们再上门继续完善,实现对货品代码做个多值处理,你看原来的查询条件是这样子的: 改成这个样子:List.Contains(Text.Split(查询条件{0}[货品代码],"、"),[货品代码])...大海:对的,通过函数对筛选条件进行修改,可以实现很灵活的查询了,你有时间还可以试试其他的。
positionIncrementGap这个特性针对multiValue字段使用,用于设置多值数据间的间隔,常见用法如下: solr.StandardTokenizerFactory"/> solr.StopFilterFactory" ignoreCase="..."/> 针对多指字符型字段而言,positionIncrementGap这个值最好不要设置为0,否则查询到的结果可能不是我们想要的..., 上面查询中cd跟xy属于两个短语,但返回的查询结果仍然将cd xy作为一个短语理解了,为了避免出现上面的问题,一般在设置多值字符类型的positionIncrementGap都设置为非0值,常见值为...100 注意: 上面positionIncrementGap=0导致查询的问题仅仅出现在同一个文档间,不同的文档间不存在这个问题!!!
age`) values (’starlee’,25) Mongo: db.user.insert({‘name’ : ’starlee’, ‘age’ : 25}) 如果你想在MySQL里添加一个字段...MongoDB的好处挺多的,比如多列索引,查询时可以用一些统计函数,支持多条件查询,但是目前多表查询是不支持的,可以想办法通过数据冗余来解决多表 查询的问题。...=3 and k>10 查询不包括某内容 db.colls.find({}, {a:0});//查询除a为0外的所有数据 支持, >=查询,需用符号替代分别为$lt,$lte,$gt...db.colls.find({ “field” : { $gte: value } } ); db.colls.find({ “field” : { $lte: value } } ); 也可对某一字段做范围查询...$size查询 db.colls.find( { a : { $size: 1 } } );//对对象的数量查询,此查询查询a的子对象数目为1的记录 $exists查询 db.colls.find
Apache Lucene这个强大的全文检索核心包,提供了搜索引擎的核心组件,通过相关性评分算法(VSM/BM25),出色的了解决了相关性匹配问题,当然Solr和ElasticSearch构建在Lucene...默认情况下,Lucene/Solr/ES的Boolean查询有三种查询策略: (1)必须匹配 -> must (2)必须不匹配 -> mustn't (3)至少匹配一个 ->should 除此之外...,对于分词字段,我们还可以通过 最小匹配查询(Minimum Should Match)来灵活控制查询策略 举个例子: 北京奇虎科技有限公司 使用IK最细粒度分词后内容:北京/奇虎/科技/有限公司...则采取进一法来得到最小匹配个数,比如计算值=3.75,那么这个mm就等于3,如果等于0.6这个等于0 语法四:mm=-25% 反向设置,返回的结果里面最多有25%的不匹配 语法五:3字段分词后的...参考资料: https://cwiki.apache.org/confluence/display/solr/The+DisMax+Query+Parser#TheDisMaxQueryParser-Themm
本文讲其中一个场景:详单查询。 背景 某电信项目中采用HBase来存储用户终端明细数据,供前台页面即时查询。...HBase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力。...针对HBase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的HBase多条件查询方案进行测试和验证。...原理 基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey...之后在HBASE中通过指定rowkey进行查询。
本文简单对比下Solr与MySQL的查询性能速度。...上面的"QTime"只是根据索引查询的时间,如果要从solr服务端获取查询到的结果集,solr需要读取stored的字段(磁盘IO),再经过Http传输到本地(网络IO),这两者比较耗时,特别是磁盘IO...方式,如果一次性要获取大量查询数据就用export方式,这里没有采用MySQL对查询字段建索引,因为数据量每天还在增加,当达到亿级的数据量的时候,索引也不能很好的解决问题,而且项目中还有其他的查询需求。...想想Solr/Lucene的索引数据的方式就清楚了:倒排索引。对于某个索引字段,该字段下有哪几个值,对于每个值,对应的文档集合是建立索引的时候就清楚的,做聚合操作的时候“统计”下就知道结果了。...综合考虑了表拆分和使用Solr来做索引查询的工作量后,还是采用了Solr。
等 2,需要提供函数查询的字段 3,需要高亮的字段,这个确实能加速,但是散仙并不建议把高亮放在服务端程序做,建议放在前端实现,不容易出错而且总体性能比服务端高 4,需要参与自定义评分的字段,这个稍复杂...docvalue值,但返回时,仅仅只能返回多值域的第一个docvalue 通常有四种docvalue存储场景: A: 字符串或UUID字段+单值 会选择SORTED作为docvalue存储 B...: 字符串或UUID字段+多值 会选择SORTED_SET作为docvalue存储 C:数值或日期或枚举字段+单值 会选择NUMERIC 作为docvalue存储 D:数值或日期或枚举字段+多值 会选择...SORTED_SET作为docvalue存储 注意,分词字段存储docvalue是没有意义的 (五)如何在Lucene,Solr,ElasticSearch中使用DocValues?...2,在Solr中docvalue默认是全部关闭,比较严谨,大家可酌情开启 ?
等 2,需要提供函数查询的字段 3,需要高亮的字段 4,需要参与自定义评分的字段 docValues特性支持的字段类型: A: 字符串或UUID字段+单值 会选择SORTED作为docvalue...存储 B: 字符串或UUID字段+多值 会选择SORTED_SET作为docvalue存储 C:数值或日期或枚举字段+单值 会选择NUMERIC 作为docvalue存储 D:数值或日期或枚举字段...+多值 会选择SORTED_SET作为docvalue存储 注: 1.修改schema.xml中字段的docValues属性后需要在更新完solr config后重新更新索引才能生效 2.设置为docValues...="true"的字段默认是意味着该字段保存了,useDocValuesAsStored默认为true,如果useDocValuesAsStored设置为false,如果想要在查询时继续返回该字段,需要使用...fl明确选择该字段,fl:*不能返回useDocValuesAsStored的docValues字段 3.doValues字段如果stored="false"时,如果该字段是多值字段,那么查询返回的值为排序后的字段
,在solr里面 通过rows和start参数,非常方便分页读取,但是如果你的start=1000000 rows=10,那么solr里面会将前面100万元数据的索引信息读取在内存里面,这样以来,非常耗内存...,所以在solr里面,分页并不适合深度分页。...使用游标的方式读取数据,也有一些约束或者缺点: (1)查询条件里面必须有cursorMark参数,而且必须不能有start参数 (2)查询的条件里必须按照主键排序(升序或降序),如果没有这个条件,主键重复...solrj实现代码例子: //游标查询 public static void cursorQuery()throws Exception{ //http solr服务...HttpSolrClient sc=new HttpSolrClient("http://localhost:8983/solr/one"); //solr查询封装
常用的查询 Field 的常用参数 常用的模型字段类型 ①常用的查询 获取所有记录: rs = User.objects.all() 获取第一条数据: rs = User.objects.first()...: rs = User.objects.count() # 查询对象的条件 查询对象的条件的意思是传给以上方法的一些参数。...相当于是 SQL 语句中的 where 语句后面的条件,语法为“字段名__规则”: exact 相当是等于号: rs = User.objects.filter(name__exact="yuntuan...③常用的模型字段类型 IntegerField:整型,映射到数据库中的 int 类型。...映射到数据库中是 date 类型,在使用的时候,可以设置 DateField.auto_now 每次保存对象时,自动设置该字段为当前时间。
重点是使用字典传值查询。可以指定字段,且是字典为非必填。字段有值就查,没有值就不查该字段。
但是,当需要查询多个字段时,MyBatis会将整个表的数据全部查询出来,这在大数据量的情况下是非常低效的。那么,如何在MyBatis中只查询指定的字段呢?本文将为你揭晓答案。...通过resultMap,可以自定义查询结果中的字段名和实体类属性名之间的映射关系。这样,就可以直接在resultMap中指定需要查询的字段,从而实现只查询指定的字段。...2.使用SQL语句进行手动拼接除了使用resultMap进行映射外,还可以直接在SQL语句中指定需要查询的字段。这样,就可以实现只查询指定的字段。...同时,在WHERE子句中指定了需要查询的字段(id、username和password)。这样,当执行这个SQL语句时,MyBatis就会只查询这三个字段的数据。...三、实战演示:使用MyBatis查询指定字段接下来,将通过一个实际的例子来演示如何使用MyBatis查询指定的字段。
schema.xml是Solr一个配置文件,它包含了你的文档所有的字段,以及当文档被加入索引或查询字段时,这些字段是如何被处理的。这个文件被存储在Solr主文件夹下的conf目录下,默认的路径....它允许用户通过分析器来定制索引和查询,分析器包括一个分词器(tokenizer)和多个过滤器(filter) 。...stop word filter就是把那些the、 of、 on之类的词从token中去除掉,由于这类词在文档中出现的频率非常高,而对文档的特征又没什么影响,所以这类词对查询没什么意义。...stored:是否存储内容,如果不需要存储字段值,尽量设置为false以提高效率。 multiValued:是否为多值类型,SOLR允许配置多个数据源字段存储到一个搜索字段中。...其包含属性: source:源field字段 dest:目标field字段 maxChars:最多拷贝多少字符 注意,这里的目标字段必须支持多值,最好不要存储,因为他只是做搜索。