- 博客(201)
- 资源 (11)
- 收藏
- 关注
原创 Solr/Lucene打分算法
摘要: 检索模型也就是文档和查询词的相关度的评分方法。Lucene使用布尔模型来确定哪些文档匹配上查询词,使用向量空间模型(VSM)来对这些文档评分。核心评分算法中的向量空间模型使用Tf-idf计算权重,对给定的词t和文档x,Tf(t,x)的值和词t在x中出现的次数正相关,而idf(t)的值和索引文档集合中包含词t的次数负相关。相关名词tf/词频 度量一个文档里词出现的频率idf/逆向文件频率
2017-04-05 22:55:35 3098
原创 Solr自定义分词器-通过特殊字符分词
摘要: 在对英文句子分词的时候,一般采用采用的分词器是WhiteSpaceTokenizerFactory,有一次因业务要求,需要根据某一个特殊字符(以逗号分词,以竖线分词)分词。感觉这种需求可能与WhiteSpaceTokenizerFactory相像,于是自己根据Solr源码自定义了分词策略。业务场景有一次,我拿到的数据都是以竖线“|”分隔,分词的时候,需要以竖线为分词单元。比如下面的这一堆数据
2017-04-02 23:07:12 5941
翻译 Solr分组聚合查询之StatsComponent
摘要: Solr可以利用StatsComponent 实现对数字、字符串或日期字段的聚合统计查询。Stats Component参数 参数 描述 stats 布尔值,设为true,表示开启Stats Component stats.field 指定需要做统计的字段 stats.facet 对指定的facet生成一个子结果集 stats.calcdistinct
2017-03-26 21:09:21 3632
原创 MarkLogic学习——XPath中的text()和string()区别
摘要: 在XPath中,经常使用text()和string(),而我一般都是想到哪个用哪个,究竟他们之间有什么不同,没有在意过。本质区别text()是一个node test,而string()是一个函数,data()是一个函数且可以保留数据类型。此外,还有点号(.)表示当前节点。使用要点XML例子: <book><author>Tom John</author></book> 用例 举例
2017-03-19 10:59:39 24169
翻译 Solr分组聚合查询之Group
摘要: Solr对结果的分组处理除了facet还可以使用group。Solr的group是根据某一字段对结果分组,将每一组内满足查询的结果按顺序返回。Group对比FacetGroup和Facet的概念很像,都是用来分组。Facet返回所有相关的结果并允许用户基于facet的目录重新定义结果集。Facet可以对分组数量进行过滤,以及排序,和日期范围,时间范围分组,但是如果你想得到具体的数据,还得需要
2017-03-18 22:10:58 21425 4
翻译 Solr分组聚合查询之Facet
摘要: Solr的分组聚合是一个笼统的概念,目的就是把查询结果做分类,有多种方式可以做到很类似的结果。也正是由于它们的不同表现,可以适合于多种场景。何为FacetFacet是一种手段,用来将搜索结果分类,它并不会修改查询结果信息,只是给分类后的结果加上了每一项的数量值。我们可以用facet来做导航栏,引导用户更精确地查找信息。一般参数 参数 说明 facet 布尔值,设置为true,表
2017-03-14 23:24:52 7131
原创 Java函数式编程
摘要: 在Java重构的过程中,巧妙的运用函数式思想能够便捷地去掉重复。函数式编程是声明式的。也就是说,她应该指定“什么要做”而非“怎么做”。这种方式使得我们可以工作更高的抽象层次。而传统的过程式以及面向对象的语言,则是命令式的,因而更关注于“怎么做”这个层面。站在面向对象思想的角度来看,函数式编程将函数看成一等公民的思想,使得我们处理的粒度从类变小为函数,从而可以更好地满足系统对重用性和扩展性的支
2017-02-26 23:08:52 10184 6
翻译 Solr Filter过滤器介绍
摘要: Solr的过滤器对接收到的标记流(TokenStream )做额外的处理。参见原文Solr的Analyzer分析器、Tokenizer分词器、Filter过滤器的区别/联系Analyzer负责把文本字段转成token stream,然后自己处理、或调用Tokenzier和Filter进一步处理,Tokenizer和Filter是同等级和顺序执行的关系,一个处理完后交给下一个处
2017-02-12 21:48:38 7317
翻译 Solr Tokenizers分词器介绍
摘要: Solr的分词器(Tokenizers)用来将文本流分解成一系列的标记(tokens)。分析器analyzer 受字段配置的影响,分词器(Tokenizers)于此无关。分析器主要是把字符流(character stream )处理成一系列的标记对象(Token objects)。参见原文。分词器说明输入流中很些信息可能是不需要的,比如空格和标点;有些信息是需要添加的,如同义词/别名;有些信
2017-02-11 22:39:19 6288 1
翻译 Solr Analyzers分析器介绍
摘要: Solr的分析器在检索过程中起着关键作用,这个分析就是提取关键信息的过程,就相当于把我们能看懂的句子转化成Solr能识别的信息。Analyzer用来校验字段的文本并生成标记流token stream. 参见原文单一的Analyzer可以在schema.xml中找到Analyzer的身影,通常来说,在配置solr.TextField的时候,会指定Analyzer,用一个<analyzer>标签
2017-02-09 23:14:20 1714
原创 Solr Fields字段Copying Fields/Dynamic Fields
摘要: Solr的Fields定义在schema.xml中,在之前已经了解了field type,Solr字段的定义在此基础上展开。一般Fields<field name="price" type="float" default="0.0" indexed="true" stored="true"/>Copying Fields<copyField source="cat" dest="text"
2017-01-22 20:48:49 1705
翻译 Solr中的日期/时间表示
摘要: Solr的日期字段(TrieDateField 和DateRangeField)可以对一个时间点以毫秒精度表示。格式Solr中的日期有很严格的格式限制: YYYY-MM-DDThh:mm:ssZYYYY 表示年MM 表示月份DD 表示天hh 表示小时,24小时制mm 表示分钟ss 表示秒钟Z 代表时区是UTC比如: 2017-01-22T17:33:18Z时区不能换,只
2017-01-22 16:56:59 7990
翻译 Solr中的字段类型field type
Solr含有多种字段类型,可用的字段类型基本都定义在了包org.apache.solr.schema中,列举如下: 类 说明 BinaryField 二进制数据 BoolField 布尔值,其中’t’/’T’/’1’都是true CollationFiled 支持Unicode排序 CurrencyField 支持货币和汇率
2017-01-16 20:59:04 12494
翻译 Solr字段类型field type的定义
摘要: Solr的字段类型定义了Solr如何解析字段数据并将数据检索出来,了解Solr的字段类型定义有助于更好的配置与使用Solr。字段类型的定义字段类型的定义主要包含如下四个方面的信息:名称实现的类名如果field type 是TextField,则可以指定字段解析器字段类型属性在schema.xml中定义的字段类型字段类型在schema.xml中指定,每一个字段类
2017-01-15 14:52:35 17377
原创 linux自动删除最老的几个文件
摘要: 最近有需求要删除Linux中旧的压缩包,发现网上给的答案都是删除N天前的文件,无法适应我的要求,于是自己研究了一翻。背景公司的文件服务器上存有所需的项目war包,一段时间以后,大量不用的工程文件占用磁盘空间,需要定期删除无用的文件。这些文件归属不同的项目目录下,创建的时间各不相同。某些陈旧项目已经数年没有更新。因此,不能只定期删除某个目录下的文件,更不能按时间删除多少天以前的文件。推进统计
2017-01-04 23:25:52 6618
原创 Solr所有的查询解析器Query Parsers
摘要: Solr除了支持常见的解析器之外,还有一些特殊用途的解析器,为了便于之后查阅,总结一下。本文整理自Solr官方文档。 解析器 说明 Standard Query Parser Solr的标准查询解析器Standard Query Parser DisMax Query Parser Solr的查询解析器DisMax Query Parser Extended Dis
2016-12-24 15:34:13 2513
原创 Solr查询中的局部参数Local Parameters
摘要: Solr中的Local Parameters(局部变量或本地参数)主要指的是query的特定参数,局部参数可以用来对一些参数类型添加meta-data元数据。本文整理自Solr官方文档。语法可以通过下面的语法来指定Local Parameters: 1. 以{!开头 2. 插入key=value形式的键值对,多个键值对以空格分开 3. 以}结尾,然后跟上查询参数q 你可以指定每个参
2016-12-24 14:36:17 1625
原创 Solr的函数查询Function Queries
摘要: 函数查询允许你使用一个或多个数字字段的真实值生成一个相关性分数,函数查询在standard、DisMax、eDisMax下都能使用。 查询函数可以是常量、字段或者其他函数的组合。使用函数可以影响结果的排序。本文整理自Solr官方文档。使用Function Query直接向QParser指定函数参数,如func或frange: q={!func}div(popularity,price)
2016-12-23 23:32:19 8635
原创 Solr的查询解析器The Extended DisMax Query Parser
摘要: 解析器The Extended DisMax Query Parser(一般用eDisMax来指代)是对DisMax query parser的改进版,除了对DisMax query parser语法的支持,还增加了新的语法规则。Extended DisMax Query Parser特点完整支持Luence语法支持AND, OR, NOT, -/+.支持magic field(魔术字
2016-12-23 22:21:56 1104
原创 Solr的查询解析器DisMax Query Parser
摘要: Solr的查询解析器DisMax Query Parser对于处理一些简单短语很有用,此外,还常常用于跨字段查询,设置不通字段不同的权重。本文整理自Solr官方文档。DisMax 设计理念DisMax query parser接口很像Solr的standard request handler,这使得它能轻松适应大多数应用场景。它有简单的语法规则,很少抛出异常给用户。 DisMax quer
2016-12-22 23:23:50 3517
原创 Solr的标准查询解析器Standard Query Parser
摘要: Solr在查询的时候,用到了QueryParser对用户输入做解析,solr默认使用的解析器是lucene,被称之为Standard Query Parser。 Standard Query Parser支持原生的查询语法,使你可以方便地构造结构化查询语句。当然,它还有不好的,就是容错比较差,总是把错误抛出来,而不是像dismax一样消化掉。Standard Query
2016-12-22 22:03:08 1997
原创 Solr基本概念杂谈
摘要: 在使用Solr之前,有必要对solr的基本概念有所认识,本文基于官方文档整理了solr有关文档(Documents)、字段(Fields)、模式(Schema)。 首先,你提供很多的信息,然后你想从这些信息中找到你想要的某个信息点。Solr做的事很简单,帮你找想要的信息。提供信息的过程称之为indexing(索引),找信息的过程称之为query(检索)。一个场景要理解Solr的工作,想
2016-12-21 23:12:14 1927
原创 Solr查询流程
Solr提供了富文本查询的功能,要想理解solr实现的原理,需要对solr整个工作的流程有一定的认识。本文基于solr说明文档,讲述solr的查询流程。下图可以大致描述solr的查询流程 用户在客户端发送查询请求 /selectsolr选择一个RequestHandler,默认是dismaxsolr选择一个QueryParser查询解析器,默认使用RequestHandler里的配置s
2016-12-20 22:30:27 3903
原创 Solr查询参数echoParams
摘要: 参数echoParams用来控制返回的responseHeader里包含哪些信息。参数说明参数echoParams有3个可选的值: 参数值 含义 explicit 默认值。包含所有指定的请求参数,再加上参数 _ all 包含所有对查询有用的参数,包含一些在solrconfig.xml中预定义的参数和 _ none 不显示params的信息。参数举例使用如下的H
2016-12-20 21:09:52 1831
原创 Solr查询参数logParamsList
摘要: 参数logParamsList用来控制solr记录哪些参数的日志,参见wiki. 默认情况下,solr会将所有的请求参数记录到日志。从solr4.7开始,支持用参数控制日志范围。你可以将自己觉得重要的参数写到日志。 logParamsList=q,fq 这样的话,就只有q和fq信息被记录到日志。 如果你不想有任何参数信息被记录的话,可以使用空的参数值 logParamsList=
2016-12-20 20:50:16 960
原创 Solr查询参数cache/cost
摘要: 默认情况下,solr会缓存查询结果,这样可以快速响应重复请求。在某些情况下,比如测试的时候,不希望solr缓存,参数cache=false可以禁用solr的缓存,当然你也可以使用cost参数去控制。参数cache=false某一次的查询可能使用到了如下的查询参数: fq={!frange l=10 u=100}mul(popularity,price) 如果我们已经知道上面的查
2016-12-19 22:00:05 1255
翻译 Solr查询参数wt
摘要: 参数wt指定用哪个Response Writer去格式化输出。参见原文 利用Response Writer,可以很方便地将搜索的结果转化成多种形式,便于结果可以整合到不同的应用中去。Solr6.4 已经支持十多种格式输出,低版本的solr可能不支持其中的一些格式。支持的格式: wt参数 使用的Response Writer csv CSVResponseWriter
2016-12-18 21:22:51 2474
原创 Solr查询参数omitHeader
摘要: 参数omitHeader用来指定是否返回查询的Header信息。 这个参数只有两个可选值,true和false。设置为true参数指定为omitHeader=true,将会隐藏header信息。
2016-12-18 20:19:41 1209
原创 Solr查询参数explainOther
摘要: 参数explainOther利用传入的查询参数q去识别你指定的文档。 对于查询的调优来说,explainOther参数很有用。当你指定了该参数,并传入值,查询将返回debugging信息。相对于主查询(main query)的结果,每一条返回的文档将会带有explain info信息。
2016-12-18 19:42:43 917
原创 Solr查询参数debug/debugQuery (调试)
debug参数可以使结果返回一些调试信息。 debug参数的合理使用,可以帮助开发者找打solr性能瓶颈,用以查找问题,优化查询参数等。目前,Solr已经支持多种调试信息返回。可以使用不同的参数值控制。如果不打开调试信息的话,默认不显示。
2016-12-14 22:32:23 3155
原创 Solr查询参数fl(field list)
Solr查询参数fl(field list)指定了返回结果字段。 参数fl限定了查询结果中包含哪些字段。这些指定的字段必须满足 stored=”true” 或者 docValues=”true”。可以使用fl=field-name来指定只返回字段field-name。如果返回多个字段,可以使用逗号(,)或者空格 将多个字段隔开。
2016-12-14 21:50:35 7178
原创 Solr查询参数(分页)start 与 rows
在Solr中,用start参数控制返回第一条记录在完整找到结果中的偏移位置,用rows 指定返回结果最多有多少条记录,配合start来实现分页。
2016-12-13 22:19:44 15467 5
原创 Solr查询参数fq
查询参数fq即过滤查询(filter query)。一般用来将查询的结果限定在某一范围,其作用类似于参数q,有时候可以被q取代。
2016-12-06 23:22:55 20266 3
原创 Solr查询参数q
摘要: Solr查询中最重要的参数就是q了。1.最暴力的查询方式 * : * 对于一次查询请求,如果只传参数q并指定查询内容* : *,这样会返回所有数据。 我用了最简单的一个查询请求:http://localhost:8080/solr/core/select?q=* : * ,没有附加的参数,它有点像SQL中的select * from table语句。 从返回结果看,我的索引数据一共有1
2016-12-04 23:39:50 5631 1
原创 Marklogic学习 —— XQuery语法之排序
XQuery语法中的排序(Sorting)。演示用的数据来自第一节。 1.使用order by语句:对数字排序默认是升序for $item in doc("order.xml")//itemorder by $item/@numreturn $item返回:<item dept="果国际" num="1697" quantity="1" color="白色"></item><item de
2016-12-04 11:44:19 1861
原创 Solr的SolrCloud与Master-slave主从模式对比
摘要: 在之前的介绍中,已经涉及到了SolrCloud模式与Master-slave模式的搭建,本篇侧重于这两种模式的比较。第一印象SolrCloud是Solr4.0引入的,主要应对与商业场景。它很像master-slave,确能自动化的完成以前需要手动完成的操作。利用ZooKeeper这个工具去监控整个Solr集群,以了解集群间各个机器的工作状态。配置的区别从配置来看,SolrC
2016-11-28 22:58:49 4929
原创 Solr的主从模式Master-Slave
摘要: 如今,为了提高Solr的搜索速度,使其具有很好的容灾能力,往往会配置SolrCloud,但在Solr4之前,还有一种很流行的方式,Master-Slave模式,为什么要提及这种方式,因为我们公司目前用的就是这种方式。引入Master-SlaveSolr在查询的时候,特别忌讳进行写操作,因为它是IO阻塞型的。现在的流行的Elasticsearch就对此有很好的改进。在引入Master-Slav
2016-11-26 21:10:09 5795
原创 Solr6与Zookeeper的SolrCloud集群
摘要: 在上一篇中,介绍了Solr6与Zookeeper在Tomcat环境做SolrCloud集群,这一篇接着介绍一些在这一过程中可能遇到的名词或概念。为什么多个Zookeeper实例Zookeeper被用来监控你的集群,启动的多个Zookeeper中有一个被称为overseer节点,负责总管你的集群。如果这个节点挂了,其他的Zookeeper会被任命为overseer,继续处理集群事务。为什么多个
2016-11-26 20:39:49 3587
原创 solr5和solr4的区别
摘要: 由于公司要升级solr,想知道solr5相对solr4来说有哪些改进,于是按照官网的介绍,总结下来。Solr5新功能增加易用性 改进了bin/solr,新增bin/post脚本 重构了Config Sets SolrJ支持Collections API 默认注册了/replication,/get,/admin/*请求更多的操作支持 以脚本形式支持在Linux上安装并运行Sol
2016-11-26 16:44:20 6038 2
Windows6.1-KB2999226补丁
2017-07-05
自定义Solr分词器
2017-04-02
kernel-headers-3.10.0-327.el7.x86_64.rpm
2017-03-05
kernel-devel-3.10.0-327.el7.x86_64.rpm
2017-03-05
mmseg4j-solr-2.3.2-with-mmseg4j-core
2016-11-09
mmseg4j-solr-2.3.0-with-mmseg4j-core
2016-11-06
marklogic eclipse 插件XQDT
2015-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人