? ? ? ?一次完整的搜索从用户输入要查询的关键词开始到系统根据用户输入的关键字返回相关信息。一次检索大致可分为4步:
? ? ?第一步:查询分析
? ? ?正常情况下用户输入正确的查询,例如输入“python”这个关键词,用户输入正确完成一次搜索,但是搜索需求通常都是全开放的,任何的用户需求都是有可能的,很大一部分还是非常口语化和个性化的,有时候还会存在拼写错误,假如不小心把”python“达成“pythno”,这个时候就需要用自然语言处理技术来做拼写纠错等处理,以正确理解用户需求。
? ? ?第二步:分词技术
? ? 这一步利用自然语言处理技术将用户输入的查询语句进行分词,如标准分词会把“lucene,全文检索框架”分成lucene|全|文|检|索|框|架,空格分词会分成:lucene,|全文检索框架|,二分法会变成:lucene|全文|文检|检索|索框|框架|,还有简单分词等多种分词方法。
? ? ?第三步:关键字检索
? ? 提交关键词后在倒排索引库中进行匹配,倒排索引就是关键词和文档之间等对应关系,就像给文档贴上标签。比如文档集中含有lucene关键词的有文档1,文档6,文档9,含有全文检索的有文档1、文档6,那么做与运算,同时含有lucene和全文检索的文档的就是1和6,在实际的搜索中会有更复杂的文档匹配模型。
? ? ?第四步:搜索排序
? ? ?对多个相关文档进行相关度计算、排序,返回给用户检索结果。
? ? ?
原文:http://blog.51cto.com/13971805/2344838