自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

转载 javassist用法

Javassist是一个执行字节码操作的强而有力的驱动代码库。它允许开发者自由的在一个已经编译好的类中添加新的方法,或者是修改已有的方法。但是,和其他的类似库不同的是,Javassist并不要求开发者对字节码方面具有多么深入的了解,同样的,它也允许开发者忽略被修改的类本身的细节和结构。字节码驱动通常被用来执行对于已经编译好的类的修改,或者由程序自动创建执行类等等等等相关方面的操作。这就

2015-09-24 18:09:28 373

转载 [Elasticsearch] 控制相关度 (三) - 通过查询结构调整相关度以及boosting查询

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。通过查询结构调整相关度ES提供的查询DSL是相当灵活的。你可以通过将单独的查询子句在查询层次中上下移动来让它更重要/更不重要。比如,下面的查询:quick OR brown OR red OR fox我们可以使用一个bool查询,对所

2015-09-16 14:58:53 514

转载 [Elasticsearch] 控制相关度 (二) - Lucene中的PSF(Practical Scoring Function)与查询期间提升

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。Lucene中的Practical Scoring Function对于多词条查询(Multiterm Queries),Lucene使用的是布尔模型(Boolean Model),TF/IDF以及向量空间模型(Vector Space Model)

2015-09-16 14:58:17 392

转载 [Elasticsearch] 控制相关度 (一) - 相关度分值计算背后的理论

本章翻译自Elasticsearch官方指南的Controlling Relevance一章。控制相关度(Controlling Relevance)对于仅处理结构化数据(比如日期,数值和字符枚举值)的数据库,它们只需要检查一份文档(在关系数据库中是一行)是否匹配查询即可。尽管布尔类型的YES|NO匹配也是全文搜索的一个必要组成,它们本身是不够的

2015-09-16 14:57:21 548

转载 [Elasticsearch] 部分匹配 (四) - 索引期间优化ngrams及索引期间的即时搜索

本章翻译自Elasticsearch官方指南的Partial Matching一章。索引期间的优化(Index-time Optimizations)目前我们讨论的所有方案都是在查询期间的。它们不需要任何特殊的映射或者索引模式(Indexing Patterns);它们只是简单地工作在已经存在于索引中的数据之上。查询期间的灵活性是有代价的:搜

2015-09-16 14:56:31 377

转载 [Elasticsearch] 部分匹配 (三) - 查询期间的即时搜索

本章翻译自Elasticsearch官方指南的Partial Matching一章。查询期间的即时搜索(Query-time Search-as-you-type)现在让我们来看看前缀匹配能够如何帮助全文搜索。用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type)。这

2015-09-16 14:55:34 463

转载 [Elasticsearch] 部分匹配 (二) - 通配符及正则表达式查询

通配符和正则表达式查询wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符。以下查询能够匹配包含W1F 7HW和W2F 8HW的文档:GET /my_index/address/_search

2015-09-16 14:54:52 5861 1

转载 [Elasticsearch] 部分匹配 (一) - 前缀查询

部分匹配(Partial Matching)敏锐的读者可能已经发现到目前为止,介绍的查询都是在整个词条层面进行操作的。匹配的最小单元必须是一个词条。你只能找到存在于倒排索引(Inverted Index)中的词条。但是如果你想匹配词条的一部分,而不是整个词条呢?部分匹配(Partial Matching)允许用户指定词条的一部分然后找到含有该部分的任何单词。匹配词条一部分这

2015-09-16 14:53:30 843

转载 [Elasticsearch] 邻近匹配 (三) - 性能,关联单词查询以及Shingles

提高性能短语和邻近度查询比简单的match查询在性能上更昂贵。match查询只是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则需要计算和比较多个可能重复词条(Multiple possibly repeated)的位置。在Lucene Nightly Benchmarks中,显示了一个简单的term查询比一个短语查询快大概10倍,比一

2015-09-16 14:53:03 496

转载 [Elasticsearch] 邻近匹配 (二) - 多值字段,邻近程度与相关度

多值字段(Multivalue Fields)在多值字段上使用短语匹配会产生古怪的行为:PUT /my_index/groups/1{ "names": [ "John Abraham", "Lincoln Smith"]}运行一个针对Abraham Lincoln的短语查询:GET /my_index/groups/_search{ "q

2015-09-16 14:52:05 720

转载 [Elasticsearch] 邻近匹配 (一) - 短语匹配以及slop参数

本文翻译自Elasticsearch官方指南的Proximity Matching一章。邻近匹配(Proximity Matching)使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每个字段,视作"一大袋的单词"(Big bag of Words)。match查询能够告诉我们这个袋子中是否包含了我们的搜索词条,但是这只是一个方面。它不能告诉我们

2015-09-16 14:51:26 915

转载 [Elasticsearch] 多字段搜索 (六) - 自定义_all字段,跨域查询及精确值字段

自定义_all字段在元数据:_all字段中,我们解释了特殊的_all字段会将其它所有字段中的值作为一个大字符串进行索引。尽管将所有字段的值作为一个字段进行索引并不是非常灵活。如果有一个自定义的_all字段用来索引人名,另外一个自定义的_all字段用来索引地址就更好了。ES通过字段映射中的copy_to参数向我们提供了这一功能:PUT /my_index{

2015-09-16 14:50:40 708

转载 [Elasticsearch] 多字段搜索 (五) - 以字段为中心的查询

以字段为中心的查询(Field-centric Queries)上述提到的三个问题都来源于most_fields是以字段为中心(Field-centric),而不是以词条为中心(Term-centric):它会查询最多匹配的字段(Most matching fields),而我们真正感兴趣的最匹配的词条(Most matching terms)。NOTEbest_fie

2015-09-16 14:49:49 846

转载 [Elasticsearch] 多字段搜索 (四) - 跨字段实体搜索

跨字段实体搜索(Cross-fields Entity Search)现在让我们看看一个常见的模式:跨字段实体搜索。类似person,product或者address这样的实体,它们的信息会分散到多个字段中。我们或许有一个person实体被索引如下:{ "firstname": "Peter", "lastname": "Smith"}而addr

2015-09-16 14:49:10 444

转载 [Elasticsearch] 多字段搜索 (三) - multi_match查询和多数字段

multi_match查询multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询。NOTE存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据"一节中提到的几种类型相同:best_fields,most_fields以及cross_fields。默认情况下,该查询以best_fields类型执行,它会为每个字

2015-09-16 14:48:26 6520

转载 [Elasticsearch] 多字段搜索 (二) - 最佳字段查询及其调优

最佳字段(Best Fields)假设我们有一个让用户搜索博客文章的网站,就像这两份文档一样:PUT /my_index/my_type/1{ "title": "Quick brown rabbits", "body": "Brown rabbits are commonly seen."}PUT /my_index/my_type/2{

2015-09-16 14:47:35 481

转载 [Elasticsearch] 多字段搜索 (一) - 多个及单个查询字符串

多字段搜索(Multifield Search)本文翻译自官方指南的Multifield Search一章。查询很少是只拥有一个match查询子句的查询。我们经常需要对一个或者多个字段使用相同或者不同的查询字符串进行搜索,这意味着我们需要将多个查询子句和它们得到的相关度分值以一种有意义的方式进行合并。也许我们正在寻找一本名为战争与和平的书,它的作者是Leo Tolstoy。

2015-09-16 14:46:26 2079

转载 [Elasticsearch] 全文搜索 (四) - 控制分析及相关度

控制分析(Controlling Analysis)查询只能摘到真实存在于倒排索引(Inverted Index)中的词条(Term),因此确保相同的分析过程会被适用于文档的索引阶段和搜索阶段的查询字符串是很重要的,这样才能够让查询中的词条能够和倒排索引中的词条匹配。尽管我们说的是文档(Document),解析器(Analyzer)是因字段而异的(Determined per Fi

2015-09-16 14:45:31 517

转载 [Elasticsearch] 全文搜索 (三) - match查询和bool查询的关系,提升查询子句

match查询是如何使用bool查询的现在,你也许意识到了使用了match查询的多词查询只是简单地将生成的term查询包含在了一个bool查询中。通过默认的or操作符,每个term查询都以一个语句被添加,所以至少一个should语句需要被匹配。以下两个查询是等价的:{ "match": { "title": "brown fox"}}{ "bool": {

2015-09-16 14:44:22 428

转载 [Elasticsearch] 全文搜索 (二) - 多词查询及查询的合并

多词查询(Multi-word Queries)如果我们一次只能搜索一个词,那么全文搜索就会显得相当不灵活。幸运的是,通过match查询来实现多词查询也同样简单:GET /my_index/my_type/_search{ "query": { "match": { "title": "BROWN DOG!" }

2015-09-16 14:43:27 747

转载 [Elasticsearch] 全文搜索 (一) - 基础概念和match查询

全文搜索(Full Text Search)现在我们已经讨论了搜索结构化数据的一些简单用例,是时候开始探索全文搜索了 - 如何在全文字段中搜索来找到最相关的文档。对于全文搜索而言,最重要的两个方面是:相关度(Relevance)查询的结果按照它们对查询本身的相关度进行排序的能力,相关度可以通过TF/IDF,参见什么是相关度,地理位置的邻近程度(Proximity

2015-09-16 14:41:31 545

转载 #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案

关键词:ElasticSearch、Lucene、solr、搜索、facet、高可用、可伸缩、mongodb、SearchHub、商品中心本文档适用人员:研发和运维提纲:曾经的基于MongoDB的筛选+排序解决方案MongoDB方案的缺陷看中了搜索引擎的facet特性看中了ES的简洁看中了ES的天生分布式设计窝窝的ES方案ES的几次事故和教训ES自身

2015-09-15 18:49:25 1319

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除