- 浏览: 178945 次
- 性别:
- 来自: 上海
最新评论
文章列表
原文链接:http://blog.csdn.net/dm_vincent/article/details/42001851
部分匹配(Partial Matching)
敏锐的读者可能已经发现到目前为止,介绍的查询都是在整个词条层面进行操作的。匹配的最小单元必须是一个词条。你只能找到存在于倒排索引(Inverted Index)中的词条。
但是如果你想匹配词条的一部分,而不是整个词条呢?部分匹配(Partial Matching)允许用户指定词条的一部分然后找到含有该部分的任何单词。
匹配词条一部分这一需求在全文搜索引擎领域比你想象的要不那么常见。如果你有SQL的背景,你可能有过 ...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41978363
提高性能
短语和邻近度查询比简单的match查询在性能上更昂贵。match查询只是查看词条是否存在于倒排索引(Inverted Index)中,而match_phrase查询则需要计算和比较多个可能重复词条(Multiple possibly repeated)的位置。
在Lucene Nightly Benchmarks中,显示了一个简单的term查询比一个短语查询快大概10倍,比一个邻近度查询(一个拥有slop的短语查询)快大概20倍。当然,这个代价是在搜 ...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41956229
多值字段(Multivalue Fields)
在多值字段上使用短语匹配会产生古怪的行为:
PUT /my_index/groups/1
{
"names": [ "John Abraham", "Lincoln Smith"]
}
运行一个针对Abraham Lincoln的短语查询:
GET /my_index/groups/_search
{
原文链接:http://blog.csdn.net/dm_vincent/article/details/41941659
本文翻译自Elasticsearch官方指南的Proximity Matching一章。
邻近匹配(Proximity Matching)
使用了TF/IDF的标准全文搜索将文档,或者至少文档中的每个字段,视作"一大袋的单词"(Big bag of Words)。match查询能够告诉我们这个袋子中是否包含了我们的搜索词条,但是这只是一个方面。它不能告诉我们关于单词间关系的任何信息。
考虑以下这些句子的区别:
Su ...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41863015
以字段为中心的查询(Field-centric Queries)
上述提到的三个问题都来源于most_fields是以字段为中心(Field-centric),而不是以词条为中心(Term-centric):它会查询最多匹配的字段(Most matching fields),而我们真正感兴趣的最匹配的词条(Most matching terms)。
NOTE
best_fields同样是以字段为中心的,因此它也存在相似的问题。
首先我们来看看 ...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41862967
跨字段实体搜索(Cross-fields Entity Search)
现在让我们看看一个常见的模式:跨字段实体搜索。类似person,product或者address这样的实体,它们的信息会分散到多个字段中。我们或许有一个person实体被索引如下:
{
"firstname": "Peter",
"lastname": "Smith"
}
...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41842691
multi_match查询
multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询。
NOTE
存在几种类型的multi_match查询,其中的3种正好和在
原文链接:http://blog.csdn.net/dm_vincent/article/details/41820537
最佳字段(Best Fields)
假设我们有一个让用户搜索博客文章的网站,就像这两份文档一样:
PUT /my_index/my_type/1
{
"title": "Quick brown rabbits",
"body": "Brown rabbits are commonly seen."
}
PUT /my_index/my_ty ...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41800351
多字段搜索(Multifield Search)
本文翻译自官方指南的Multifield Search一章。
查询很少是只拥有一个match查询子句的查询。我们经常需要对一个或者多个字段使用相同或者不同的查询字符串进行搜索,这意味着我们需要将多个查询子句和它们得到的相关度分值以一种有意义的方式进行合并。
也许我们正在寻找一本名为战争与和平的书,它的作者是Leo Tolstoy。也许我们正在使用"最少应该匹配(Minimum Should ...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41773959
控制分析(Controlling Analysis)
查询只能摘到真实存在于倒排索引(Inverted Index)中的词条(Term),因此确保相同的分析过程会被适用于文档的索引阶段和搜索阶段的查询字符串是很重要的,这样才能够让查询中的词条能够和倒排索引中的词条匹配。
尽管我们说的是文档(Document),解析器(Analyzer)是因字段而异的(Determined per Field)。每个字段都能够拥有一个不同的解析器,通过为该字段配置一个特定的解析 ...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41743955
match查询是如何使用bool查询的
现在,你也许意识到了使用了match查询的多词查询只是简单地将生成的term查询包含在了一个bool查询中。通过默认的or操作符,每个term查询都以一个语句被添加,所以至少一个
原文链接:http://blog.csdn.net/dm_vincent/article/details/41720193
多词查询(Multi-word Queries)
如果我们一次只能搜索一个词,那么全文搜索就会显得相当不灵活。幸运的是,通过match查询来实现多词查询也同样简单:
GET /my_index/my_type/_search
{
"query": {
"match": {
"title": "BROWN DOG!"
...
原文链接:http://blog.csdn.net/dm_vincent/article/details/41693125
翻译自官方指南的全文搜索一章
全文搜索(Full Text Search)
现在我们已经讨论了搜索结构化数据的一些简单用例,是时候开始探索全文搜索了 - 如何在全文字段中搜索来找到最相关的文档。
对于全文搜索而言,最重要的两个方面是:
相关度(Relevance)
查询的结果按照它们对查询本身的相关度进行排序的能力,相关度可以通过TF/IDF,参见
原文链接:http://blog.csdn.net/dm_vincent/article/details/41277737
本文翻译自Elasticsearch官方指南的Distributed Search Execution一章。
在继续之前,我们将绕一段路来谈谈在分布式环境中,搜索是如何执行的。和在分布式文档存储(Distributed Document Store)中讨论的基本CRUD操作相比,这个过程会更加复杂一些。
一个CRUD操作会处理一个文档,该文档有唯一的_index,_type和路由值(Routing Value,它默认情况下就是文档的_id)组合。这意味 ...
整理了一下之前收集的有关俄罗斯的资料,有新的了会继续添加上去,有兴趣的可以看一看
俄罗斯潘婷励志广告:http://www.iqiyi.com/v_19rrn5j5kg.html#vfrm=2-3-0-1
俄语之家:http://www.eyuzhijia.com/
门户网站:
Rambler:www.rambler.ru
Russia:http://www.russia.com/
搜索:
Google俄罗斯:http://www.google.ru/
Yandex:http://www.yandex.com
Webalta:http://weba ...