精确搜索和全文字搜索(exact values vs. full text)
2014-06-03 11:51
861 查看
ES中的数据可以广义的分为两种类型:精确值和全文值
精确值就是想他们本来的意思一样存储。例如,date或者用户ID,可以作为精确的string类型进行存储,就像一个用户名或邮箱地址一样,精确的值“Foo”和精确值”foo“是不同的,精确值2014和精确值2014-09-15也是不同的。
全文字,也就是和文本数据——常常使用人类语言进行存储,就像是tweet中的texti或邮件的消息体。
full text常常是”未结构化的数据“,这样说有点不合适,自然语言是高度的结构化的。问题是自然语言的标准是复杂的,这使得让计算机正确解析自然语言是很复杂的。例如:
这个是指月份呢还是指人呢?
精确的数值让查询变得简单。这个决定是二进制的(The decision is binary)——一个数值要么匹配查询,要么不匹配。就像是使用SQL表达式一样简单:
全文数据搜索是很微妙的,我们不但但是搜素”Does this document match the query“而是”How well does this document match the query?”也就是说document符合我们搜索的层度。
我们很少希望精确匹配这个字段,而是我们希望搜索的条件是包含在字段中。不进如此,我们还希望搜索明白我们的意图,比如:
1:搜索“UK”应该返回有关“United Kingdom”的document。
2:搜索“jump”应该返回符合“jumped”,“jumps”,“jumping”甚至是“leap”。
3:“johnny walker“应该匹配”Johnny Waler“、”johnnie depp“应该匹配”Johnny Deep“
4:fox news hunting”应该返回有关Fox news的hunting,然而“fox hunting news”应该返回有关hunting的news。
为了有利于在全文字段对这些类型的查询 ,ES首先analyzes这些文字,然后使用结果构建一个inverted index,我们会在接下来的两个章节讨论inverted index和analysis。
原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_exact_values_vs_full_text.html
精确值就是想他们本来的意思一样存储。例如,date或者用户ID,可以作为精确的string类型进行存储,就像一个用户名或邮箱地址一样,精确的值“Foo”和精确值”foo“是不同的,精确值2014和精确值2014-09-15也是不同的。
全文字,也就是和文本数据——常常使用人类语言进行存储,就像是tweet中的texti或邮件的消息体。
full text常常是”未结构化的数据“,这样说有点不合适,自然语言是高度的结构化的。问题是自然语言的标准是复杂的,这使得让计算机正确解析自然语言是很复杂的。例如:
May is fun but June bores me.
这个是指月份呢还是指人呢?
精确的数值让查询变得简单。这个决定是二进制的(The decision is binary)——一个数值要么匹配查询,要么不匹配。就像是使用SQL表达式一样简单:
WHERE name ="John Smith" AND user_id =2 AND date >"2014-09-15"
全文数据搜索是很微妙的,我们不但但是搜素”Does this document match the query“而是”How well does this document match the query?”也就是说document符合我们搜索的层度。
我们很少希望精确匹配这个字段,而是我们希望搜索的条件是包含在字段中。不进如此,我们还希望搜索明白我们的意图,比如:
1:搜索“UK”应该返回有关“United Kingdom”的document。
2:搜索“jump”应该返回符合“jumped”,“jumps”,“jumping”甚至是“leap”。
3:“johnny walker“应该匹配”Johnny Waler“、”johnnie depp“应该匹配”Johnny Deep“
4:fox news hunting”应该返回有关Fox news的hunting,然而“fox hunting news”应该返回有关hunting的news。
为了有利于在全文字段对这些类型的查询 ,ES首先analyzes这些文字,然后使用结果构建一个inverted index,我们会在接下来的两个章节讨论inverted index和analysis。
原文:http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_exact_values_vs_full_text.html
相关文章推荐
- ES权威指南[官方文档学习笔记]-55 Exact values vs. Full text
- Elasticsearch之确切值(Exact values)、全文文本(full text)、倒排索引(inverted index)。
- Linq实践系列(1):一行代码实现DataTable全文搜索(Full Text Search)
- Linq实践教程(1):一行代码实现DataTable全文搜索(Full Text Search)
- paip.mysql fulltext 全文搜索.最佳实践.
- paip.mysql fulltext 全文搜索.最佳实践.
- MYSQ LFULLTEXT索引实现全文搜索
- 如何为Postgresql数据库全文搜索(full text search)编写解析器(parser)
- flask入门的教程-全文搜索 Full Text Search
- mysql 全文搜索 FULLTEXT
- 全文检索(full-text search)
- SQL Server 2008 Full-Text Search Overview(SQL Server 2008全文检索概览)
- fulltext不支持Mysql中文全文索引
- SQLServer 全文检索(full-text)语法
- 使用DB2 Text Search进行全文本搜索pdf
- SQL Server 2008 Full Text Searching SSMS Demo(SQL2008全文检索演示代码)(来自msdn)
- iOS/Android SQLite 全文检索——FTS (Full Text Search)
- mysql full text全文索引必要条件
- ElasticSearch--Term-Based VS Full-Text
- SQL Server 2008 Full Text Searching SSMS Demo(SQL2008全文检索演示代码)(来自msdn)