ES权威指南[官方文档学习笔记]-55 Exact values vs. Full text

原创
2014/05/14 15:04
阅读数 419

es:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_exact_values_vs_full_text.html

下一篇:http://my.oschina.net/qiangzigege/blog/265360

内容

数据类型可以分为2类:具体值和全文。

具体值,比如说日期或者一个用户ID,也可以包括具体的字符串比如用户名或者邮箱。

具体值"Foo"与具体值"foo"不同. 
具体值2014 与具体值2014-09-15也不同.

全文,引用文本内容,比如tweet的文本或者email的内容。

全文通常理解为非结构化数据,问题是:自然语言的规则复杂,计算机难以解析,比如,考虑到以下句子:

May is fun but June bores me.
这是说月份还是人?

具体值就容易查询,一个值要么匹配查询要么不匹配。
用SQL表达如下:

WHERE name    = "John Smith"
  AND user_id = 2
  AND date    > "2014-09-15"
  
查询全文的数据就更微妙,
我们不仅仅问文档是否匹配查询,还要知道文档与查询有多匹配,
换句话来说,相关度如何?

很少情况下,我们想完全匹配文本段,而是在文本域里搜索,我们还希望搜索能够理解我们的意图。

一个针对于"UK"的搜索应该可以返回包含"United Kingdom"的文档。

一个针对于"jump"的搜索应该匹配 "jumped", "jumps", "jumping" 或许甚至匹配"leap"

"johnny walker"应该匹配"Johnnie Walker","johnnie depp"应该匹配"Johnny Depp"。

"fox news hunting"应该返回跟"hunting on Fox News"有关的故事,
"fox hunting news"应该返回"news stories about fox hunting"有关的。

为了让这些全文字段的搜索便利,es首先分析文本,然后使用结果来建立倒排索引,
我们将讨论倒排索引和分析过程。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部