本章翻译自Elasticsearch官方指南的Controlling
Relevance一章。
通过查询结构调整相关度
ES提供的查询DSL是相当灵活的。你可以通过将单独的查询子句在查询层次中上下移动来让它更重要/更不重要。比如,下面的查询:
quick OR brown OR red OR fox
我们可以使用一个bool查询,对所有词条一视同仁:...
分类:
其他好文 时间:
2014-12-25 01:30:42
阅读次数:
251
本章翻译自Elasticsearch官方指南的Controlling
Relevance一章。
Lucene中的Practical Scoring Function
对于多词条查询(Multiterm Queries),Lucene使用的是布尔模型(Boolean
Model),TF/IDF以及向量空间模型(Vector
Space Model)来将它们结合...
分类:
Web程序 时间:
2014-12-24 11:53:03
阅读次数:
273
本章翻译自Elasticsearch官方指南的Partial Matching一章。
查询期间的即时搜索(Query-time Search-as-you-type)
现在让我们来看看前缀匹配能够如何帮助全文搜索。用户已经习惯于在完成输入之前就看到搜索结果了 - 这被称为即时搜索(Instant Search, 或者Search-as-you-type)。这不仅让用户能...
分类:
其他好文 时间:
2014-12-21 12:44:42
阅读次数:
203
通配符和正则表达式查询
wildcard查询和prefix查询类似,也是一个基于词条的低级别查询。但是它能够让你指定一个模式(Pattern),而不是一个前缀(Prefix)。它使用标准的shell通配符:?用来匹配任意字符,*用来匹配零个或者多个字符。
以下查询能够匹配包含W1F 7HW和W2F 8HW的文档:
GET /my_index/address/_search
{...
分类:
其他好文 时间:
2014-12-19 12:14:46
阅读次数:
201
多值字段(Multivalue Fields)
在多值字段上使用短语匹配会产生古怪的行为:
PUT /my_index/groups/1
{
"names": [ "John Abraham", "Lincoln Smith"]
}
运行一个针对Abraham Lincoln的短语查询:
GET /my_index/groups/_search
{
"q...
分类:
其他好文 时间:
2014-12-16 10:04:15
阅读次数:
236
本文翻译自Elasticsearch官方指南的Proximity Matching一章。
邻近匹配(Proximity Matching)
使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每个字段,视作"一大袋的单词"(Big bag of Words)。match查询能够告诉我们这个袋子中是否包含了我们的搜索词条,但是这只是一个方面。它不能告诉我们关于单词间关...
分类:
其他好文 时间:
2014-12-15 12:11:17
阅读次数:
205
一、布尔代数和搜索引擎
搜索引擎是每天都在使用的一种工具,它是一门非常复杂的技术,实现一个搜索引擎并非易事。但是,技术是分为术和道两种的,具体的做事方法是术,做事的原理和原则是道。
不谈搜索引擎的术,但可以说说它的道。
搜索引擎的原理相对于它在技术上的实现,就非常简单了。建立一个搜索引擎大致需要做这几件事:自动下载尽可能多的网页;建立快速有效的索引;根据相关性对网页进行公平准确的排序。
1、布尔代数
布尔代数起源于二进制。中国的阴阳学说是二进制的雏形,而二进制作为一个计数系统,是在公元前2-5世纪...
分类:
Web程序 时间:
2014-12-14 10:42:40
阅读次数:
220
一、布尔代数和搜索引擎搜索引擎是每天都在使用的一种工具,它是一门非常复杂的技术,实现一个搜索引擎并非易事。但是,技术是分为术和道两种的,具体的做事方法是术,做事的原理和原则是道。不谈搜索引擎的术,但可以说说它的道。搜索引擎的原理相对于它在技术上的实现,就非常简单了。建立一个搜索引擎大致需要做这几件事...
分类:
Web程序 时间:
2014-12-14 10:35:38
阅读次数:
163
自定义_all字段
在元数据:_all字段中,我们解释了特殊的_all字段会将其它所有字段中的值作为一个大字符串进行索引。尽管将所有字段的值作为一个字段进行索引并不是非常灵活。如果有一个自定义的_all字段用来索引人名,另外一个自定义的_all字段用来索引地址就更好了。
ES通过字段映射中的copy_to参数向我们提供了这一功能:
PUT /my_index
{
"m...
分类:
其他好文 时间:
2014-12-12 10:12:29
阅读次数:
205
控制分析(Controlling Analysis)
查询只能摘到真实存在于倒排索引(Inverted Index)中的词条(Term),因此确保相同的分析过程会被适用于文档的索引阶段和搜索阶段的查询字符串是很重要的,这样才能够让查询中的词条能够和倒排索引中的词条匹配。
尽管我们说的是文档(Document),解析器(Analyzer)是因字段而异的(Determined per Fi...
分类:
其他好文 时间:
2014-12-06 11:27:30
阅读次数:
319