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

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

继续阅读 »

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

以字段为中心的查询(Field-centric Queries) 上述提到的三个问题都来源于most_fields是以字段为中心(Field-centric),而不是以词条为中心(Term-centric):它会查询最多匹配的字段(Most matching fields),而我们真正感兴趣的最匹配的词条(Most matching terms)。 NOTEbest_fields同样是以字段为中心的,因此它也存在相似的问题。 首先我们来看看为什么存在这些问题,以及如何解决它们。 问题1:在多个字段中匹配相同的单词 考虑一下most_fields查询是如何执行的:ES会为每个字段生成一个match查询,让后将它们包含在一个bool查询中。 我们可以将查询传入到validate-query AP...

继续阅读 »

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

跨字段实体搜索(Cross-fields Entity Search) 现在让我们看看一个常见的模式:跨字段实体搜索。类似person,product或者address这样的实体,它们的信息会分散到多个字段中。我们或许有一个person实体被索引如下: { "firstname": "Peter", "lastname": "Smith" } 而address实体则是像下面这样: { "street": "5 Poland Street", "city": "London", "country": "United Kingdom", "postcode": "W1V 3DG" } 这个例子也许很像在多查询字符串中描述的,但是...

继续阅读 »

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

multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询。 NOTE 存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据"一节中提到的几种类型相同:best_fields,most_fields以及cross_fields。 默认情况下,该查询以best_fields类型执行,它会为每个字段生成一个match查询,然后将这些查询包含在一个dis_max查询中。下面的dis_max查询: { "dis_max": { "queries": [ { "match": { "title": { "query": "Quick brown fox...

继续阅读 »

[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 { "title": "Keeping pets healthy", "body": "My quick brown fox eats rabbits on a regular basis." } 用户输入了"Brown fox",然后按下了搜索键。我们无法预先知道用户搜索的词条会出现在博文的title或者b...

继续阅读 »

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

多字段搜索(Multifield Search) 本文翻译自官方指南的Multifield Search一章。 查询很少是只拥有一个match查询子句的查询。我们经常需要对一个或者多个字段使用相同或者不同的查询字符串进行搜索,这意味着我们需要将多个查询子句和它们得到的相关度分值以一种有意义的方式进行合并。 也许我们正在寻找一本名为战争与和平的书,它的作者是Leo Tolstoy。也许我们正在使用“最少应该匹配(Minimum Should Match)”来搜索ES中的文档。另外我们也可能会寻找拥有名为John而姓为Smith的用户。 在本章中我们会讨论一些构建多字段搜索的工具,以及如何根据你的实际情况来决定使用哪种方案。 多个查询字符串(Multiple Query Strings) 处理字...

继续阅读 »

十八岁生日快乐

正是江南好风景,落花时节又逢君。十八岁生日老婆不在身边,两位久别好友陪我过。 一直陪我从十七岁的最后一晚上,陪我到十八岁的第一个凌晨。很高兴我们都从北京都转移到武汉了,以后大家又都在一起了。

继续阅读 »

maven打包可执行jar文件

需要打包有依赖第三方jar包的可执行jar会用到,他会帮你将所有的第三方的jar包都打到同一个jar中,这样就不用手动去设置classpath org.apache.maven.plugins maven-shade-plugin 1.2.1 ...

继续阅读 »

Vue相关开源项目库汇总

awesome-github-vue 是由OpenDigg整理并维护的Vue相关开源项目库集合。我们会定期同步OpenDigg上的项目到这里,也欢迎各位提交项目给我们。 如果收录的项目有错误,可以通过issue反馈给我们。这里的项目Star数不是实时更新的,一般是一周更新一次。 内容 UI组件 开发框架 实用库 服务端 辅助工具 应用实例 Demo示例 UI组件 element ★9689 - 饿了么出品的Vue2的web UI工具套件 Vux ★6927 - 基于Vue和WeUI的组件库 mint-ui ★4870 - Vue 2的移动UI元素 iview ★4782 - 基于 Vuejs 的开源 UI 组件库 Keen-UI ★2401 - 轻量级的基本UI组件合集 vue-materi...

继续阅读 »

一篇文章看懂when.js

最近在拾起很久都没做过的前端,总结下When.js的最常用的场景。 场景1 执行异步function a,当成功时执行function b,失败时执行function c,执行过程中需要回调function d来监控执行状态。 这个是最通用的用法,也是when.js中最长用到的,示例代码如下: function a () { var deferred = when.defer() for (var i = 0; i < 100; i++) { try { deferred.notify(i++); } catch (err) { deferred.reject(e) } } defer...

继续阅读 »

自制的喇叭

很多年没在家过春天了,今天看到杨柳树发芽了,突发奇想要找一下童年的感觉,就用柳树条做了一个喇叭。做的过程中,小朋友还很期待的样子,哈哈,也让他感受一下我们童年的快乐。

继续阅读 »

Java解析搜索词库

解析算法摘自:http://qindongliang.iteye.com/blog/2088416 最近在优化社区搜索结果,之前使用的词库比较老旧很多次都收录不全,所以想到了搜狗输入法词库。但是搜索输入法词库文件是加密之后的,去网上找了一个Java版的解析程序,经测试可用,这里搜藏一下。 package cn.mucang.saturn.common; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.file.Files; import java.nio.file.LinkOption; import java.nio.file.Paths; ...

继续阅读 »

高烦烦的小猪佩奇

高涵涵说,他是小猪佩奇、我是猪爸爸、妈妈是猪妈妈、爷爷是猪爷爷、奶奶是猪奶奶、还有乔治在妈妈肚肚里,我们一家也过上了童话中的生活了。

继续阅读 »

生成不重复随机数

生成一组不重复随机数需求在很多场景下都会用到,实现方式也有很多种,我这里提供一种实现方式。我的方法是利用Set无法插入重复对象的特性来完成。实现方式如下。 private static Random random = new Random(); /** * @param size 生成数量 * @param bound 随机范围 * @return */ private static Set getRandomIndex(int size, int bound) { if (size < 1 && size > bound) { return Sets.newLinkedHashSet(); } Set s...

继续阅读 »