[关闭]
@tsihedeyo 2014-08-04T20:31:34.000000Z 字数 1445 阅读 2453

Solr in Action 6.1

solr_in_action chapter_6 翻译

作业地址


本章包括

  • Solr的分析表单猜测是
  • 自定义字段类型,进行进阶文本分析
  • 利用Solr的Plug-In框架扩展文本分析

第五章中,我们Solr索引如何工作,以及在schema.xml中定义了非文本字段。本章学习文本分析。

文本分析可支持自然语言的同义词,你不会希望你的用户需要执行类似这样的查询buying house OR purchase home OR buying a home OR purchasing a house

本章重点分析Solr的以下几个文本分析组件:

  • Solr文本分析的基本组件,analyzer, tokenizer, and chain
    of token filters
  • 自定义字段类型以支持构建索引以及查询时候的文本分析
  • 基本的文本分析方法,如去掉removing stop words, lowercasing,
    removing accents, synonym expansion, and stemming

我们使用了Tweets数据,这给我们的分析带来了一些挑战,包括:

  • 合并过多的字符重复,如yummm
  • 处理#hashtags以及@mentions
  • Use a custom token filter to resolve shortened bit.ly-style URLs

6.1 分析轻博客数据

以下是我们需要分析的样例数据:

`#Yummm :) Drinking a latte at Caffé Grecco in SF's historic North Beach... Learning text analysis with #SolrInAction by @ManningBooks on my i-Pad`

之前已经说过,文本分析的主要目的就是让用户不需要考虑列举他们搜索的字段的所有可能同义词。图6.1用户搜索了San Francisco north beach coffee,显然是希望找到San Francisco north beach的好coffee店主。

图6.1 第五章的示例web搜素框
!图 6.1

虽然对于我们的样例数据来说并没有对San Francisco, north beach, and coffee并没有绝对精准出现,但是样例应该还是一个完美匹配。之所以认为是完美匹配原因如下表6.1

表6.1 样例匹配表

用户搜索 文档内容
San Francisco SF’s
north beach North Beach
Coffee latte, Caffé

所以我们要做的就是把文档内容转成内容以匹配的形式。图6.2显示了Solr的文本分析框架进行的转换,现在你可以把它想成一个黑盒,稍后我再深入了解。
图6.2 Tweet文本被转换成更容易搜索的形式。每个Box表示一个词,词中间的空格表示被去除的stop words
!图6.2

表6.2展示了其中涉及到的转换,虽然单个词的转换非常小,但是合在一起就对用户体验有很大的改进。

表6.2 Solr内置分析框架做的文本转换
!表6.2

Solr的ASCIIFoldingFilterFactory可将caffé转成caffeWordDelimiterFilterFactoryi-Pad处理为两个索引项目ipadi pad
PatternReplaceCharFilterFactory支持正则匹配替换,如yummm替换成yumm

以上这些转换都是Solr内置的,无需在scheml.xml中进行配置。


6.2 基本文本分析

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注