ElasticSearch 2 (19) - 语言处理系列之故事开始 摘要 全文搜索是精度(尽可能少的返回不相关文档)和召回(尽可能多的返回相关文档)的战场.尽管只精确匹配用户查询的词肯定会是精确的,但这并不够.我们可能会丢失许多被用户认为相关的文档,取而代之的是我们需要扩大撒网范围,去搜索那些与原始查询不完全相同但又相关的词. 版本 elasticsearch版本: elasticsearch-2.x 内容 全文搜索是精度(尽可能少的返回不相关文档)和召回(尽可能多的返回相关文档)的战场.尽管…
ElasticSearch 2 (27) - 信息聚合系列之故事开始 摘要 到目前为止,本书都在着重介绍搜索.对于搜索,我们有查询条件以及与查找到与条件匹配的集合.这个过程就和如大海捞针一样. 对于聚合,我们站在远处总观数据.与查看单个文档不同,我们想要对数据集合进行整体的分析和总结. 版本 elasticsearch版本: elasticsearch-2.x 内容 到目前为止,本书都在着重介绍搜索.对于搜索,我们有查询条件以及与查找到与条件匹配的集合.这个过程就和如大海捞针一样. 对于聚合,我…
ElasticSearch 2 (26) - 语言处理系列之打字或拼写错误 摘要 我们喜欢在对结构化数据(如:日期和价格)做查询时,结果只返回那些能精确匹配的文档.但是,好的全文搜索不应该有这样的限制.相反,我们可以扩大范围,包括更多可能匹配的词语,使用相关度评分将更匹配的文档放置在结果集的顶部. 事实上,只做精确匹配的全文搜索很有可能会让用户失望,难道我们不希望搜索 "quick brown fox" 可以匹配到包含 "fast brown foxes" 的文档,…
ElasticSearch 2 (25) - 语言处理系列之同义词 摘要 词干提取有助于通过简化屈折词到它们词根的形式来扩展搜索的范围,而同义词是通过关联概念和想法来扩展搜索范围的.或许没有文档能与查询 "English queen" 相匹配,但是包含 "British monarch" 的文档会很可能被认为是一个好的匹配. 用户搜索 "the US" 可能期望找到文档包含 United States.USA.U.S.A..America 或 t…
ElasticSearch 2 (24) - 语言处理系列之停用词:性能与精度 摘要 在信息检索早期,磁盘和内存相较我们今天的使用只是很小的一部分.将索引空间保持在一个较小的水平是至关重要的,节省每个字节都意味着巨大的性能提升.词干提取(参见 缩减单词至词根形式(Reducing Words to Their Root Form))的重要性不仅是因为它让搜索的内容更广泛.让检索的能力更深入,还因为它是压缩索引空间的工具. 要减少索引空间的另一个简单的方法就是索引更少的词.在搜索中,有些词要比其他…
ElasticSearch 2 (23) - 语言处理系列之词根提取 摘要 世界上大多数语言都是屈折变化的,意思是词语可以通过变形来表达不同的含义: 数(Number): fox, foxes 时态(Tense): pay, paid, paying 性(Gender): waiter, waitress 人称(Person): hear, hears 格(Case): I, me, my 体(Aspect): ate, eaten 情态(Mood): so be it, were it so…
ElasticSearch 2 (22) - 语言处理系列之标记规范化 摘要 将文本拆解成标记只是工作的一半.为了使这些标记更容易被搜索到,它们需要经过一个规范化的处理过程,以移除相同单词间不重要的差异(比如:大小写).或许我们还需要移除一些重要的差异,让esta.ésta和 está 可以作为相同的词被搜索.是会搜索 déjà vu 还是 deja vu 呢? 这是标记过滤器的工作,它从标记器接收一个标记流.我们可以有多个标记过滤器,他们各司其则,每个都将它们前一个标记过滤器的输出作为自己的新…
ElasticSearch 2 (21) - 语言处理系列之单词识别 摘要 一个英语单词相对容易识别:因为英语单词是被空格或(某些)标点符号隔开的.但在英语中也有反例:you're 这个词是一个单词还是两个?那 o'clock. cooperate. half-baked 或 eyewitness 这些词呢? 如德语或荷兰语这样的语言将多个独立单词组合在一起创建更长的复合词(如:Weißkopfseeadler 在英文里是 "white-headed sea eagle" 意思为&qu…
ElasticSearch 2 (20) - 语言处理系列之如何开始 摘要 Elasticsearch 配备了一组语言分析器,为世界上大多数常见的语言提供良好的现成基础支持. 阿拉伯语.亚美尼亚语,巴斯克语,加泰罗尼亚语,巴西语.保加利亚语.汉语.捷克语.丹麦语.荷兰语.英语.芬兰语.法语.德语.希腊语.加利西亚语.印度语.匈牙利语.印尼语.爱尔兰语.意大利语.日语.韩语.库尔德语.挪威语.波斯语.葡萄牙语.俄罗斯语.西班牙语.罗马尼亚语.瑞典语.土耳其语.泰语. 这些分析器通常扮演四种角色:…
ElasticSearch 2 (18) - 深入搜索系列之控制相关度 摘要 处理结构化数据(比如:时间.数字.字符串.枚举)的数据库只需要检查一个文档(或行,在关系数据库)是否与查询匹配. 布尔是/非匹配是全文搜索的基础部分,但不止这些,我们也同样需要知道每个文档与查询的相关度,在全文搜索引擎中我们不仅需要找到匹配的文档,还需要根据他们相关度的高低,对他们进行排序. 全文相关的公式或相似算法(similarity algorithms) 会将多个因素合并起来,为每个文档生成一个相关度分数 *_…