论文部分内容阅读
摘要:该文针对网上书城对信息实时性与准确性高的要求,提出了使用lucene与盘古分词器相结合的站内搜索系统解决方案。通过分析lucene内置分词器与盘古分词器的性能差异,选择了针对中文开发的盘古分词器,提高了搜索的准确性;通过采用“生产者与消费者”多线程模式与“单例”设计模式相结合的方法,实现了数据的实时更新。实验结果证明了设计方案的有效性。
关键词:lucene;盘古分词;网上书城;站内搜索
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)20-0184-04
站内搜索是指对网站内部信息的精确检索和资源挖掘, 它为用户提供准确、快速的站内信息检索服务,站内搜索效果直接决定着网站商品的销量。现有的网上书城网站大多采用链接google和baidu网站的方法实现搜索,不利于数据的实时更新,此外,还存在着书籍信息准确性不高的缺点。
Lucene是目前最流行开源检索工具包之一, 已经在许多搜索项目中得到了应用。盘古分词也是一个比较成熟的中文分词组件,而且采用多元分词技术,可以很好的实现对中文的分词。因而本文针对中小网上书城提出了一个基于lucene.net与盘古分词的站内搜索技术方案,提高网站的竞争力。
1 站内搜索方案设计
网上书城站内搜索系统框图如图1所示。
本文提出的站内搜索方案将系统分为书籍编辑模块、索引模块、检索模块和展示模块4个部分。书籍编辑模块主要负责收集书籍的信息并且转换为纯文本信息,即lucene可识别的信息。索引模块主要针对数据库创建和维护索引库,即每当增加或修改书籍的信息到数据库时,就更新索引库。 检索模块主要针对用户输入的关键字进行分析,然后查询索引库找到相关联书籍,并且按相关性程度排序。展示模块主要负责接受用户输入的关键字,并展示搜索的结果中书籍的信息以及如何展示。根据搜索结果,可以定制个性化的展示。
图1 网上书城站内搜索系统框图
2 盘古分词器性能分析
盘古分词是一个中英文分词组件。它的作者通过分析比较中文分词的一元分词、二元分词,多元分词和精确分词的性能,得出多元分词适用性更强。但采用多元分词产生了一些问题,第一,多元分词和搜索引擎结合得到较多的匹配结果,同时也增加了索引文件的大小;第二,由于将一些单词进行了拆分,搜索结果的排序会受到影响。为了克服这两个缺点,盘古分词提出了多元分词的冗余度(Redundancy)和多元分词结果的权重级别(Rank)的概念。盘古分词支持3级冗余。比如“湖北大学”,冗余度为0、1、2时,分词结果分别是“湖北大学”、“湖北,湖北大学,大学”、“湖北,湖北大学,大,大学,学”。盘古分词将多元分词出来的单词根据其词长,词的间隔以及未登录词的取舍等条件给定了不同的权重。在搜索时对分解出来的关键字,我们指定权重来影响搜索结果,以实现结果有效排序。比如搜“湖北大学”时,可以将“湖北大学”设置较高的权重,而“大学”和“湖北”设置较低权重,则包含“湖北大学”的记录就优先于包含“湖北”或“大学”的记录,这样就解决了排序问题。
为了说明盘古分词优于lucene内置分词器,做了如下表格的对比。从表中可以看出,StopAnalyzer针对非字母字符拆分文本,然后小写英文字母,再过滤掉停用词;KeywordAnalyzer将整个文本当作一个词处理;SimpleAnalyzer和StopAnalyzer类似;WhitespaceAnalyzer根据空格拆分词汇单元;StandardAnalyzer按每个汉字拆分词,PanGuAnalyzer按有意义的中文词语分词,显然效果最佳。因而本文选择盘古分词器,提高搜索的准确性。
分词比较的结果如下表1所示。
表1 盘古分词器与lucene内置分词器性能比较
[分词器
结果
分词内容\
关键词:lucene;盘古分词;网上书城;站内搜索
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)20-0184-04
站内搜索是指对网站内部信息的精确检索和资源挖掘, 它为用户提供准确、快速的站内信息检索服务,站内搜索效果直接决定着网站商品的销量。现有的网上书城网站大多采用链接google和baidu网站的方法实现搜索,不利于数据的实时更新,此外,还存在着书籍信息准确性不高的缺点。
Lucene是目前最流行开源检索工具包之一, 已经在许多搜索项目中得到了应用。盘古分词也是一个比较成熟的中文分词组件,而且采用多元分词技术,可以很好的实现对中文的分词。因而本文针对中小网上书城提出了一个基于lucene.net与盘古分词的站内搜索技术方案,提高网站的竞争力。
1 站内搜索方案设计
网上书城站内搜索系统框图如图1所示。
本文提出的站内搜索方案将系统分为书籍编辑模块、索引模块、检索模块和展示模块4个部分。书籍编辑模块主要负责收集书籍的信息并且转换为纯文本信息,即lucene可识别的信息。索引模块主要针对数据库创建和维护索引库,即每当增加或修改书籍的信息到数据库时,就更新索引库。 检索模块主要针对用户输入的关键字进行分析,然后查询索引库找到相关联书籍,并且按相关性程度排序。展示模块主要负责接受用户输入的关键字,并展示搜索的结果中书籍的信息以及如何展示。根据搜索结果,可以定制个性化的展示。
图1 网上书城站内搜索系统框图
2 盘古分词器性能分析
盘古分词是一个中英文分词组件。它的作者通过分析比较中文分词的一元分词、二元分词,多元分词和精确分词的性能,得出多元分词适用性更强。但采用多元分词产生了一些问题,第一,多元分词和搜索引擎结合得到较多的匹配结果,同时也增加了索引文件的大小;第二,由于将一些单词进行了拆分,搜索结果的排序会受到影响。为了克服这两个缺点,盘古分词提出了多元分词的冗余度(Redundancy)和多元分词结果的权重级别(Rank)的概念。盘古分词支持3级冗余。比如“湖北大学”,冗余度为0、1、2时,分词结果分别是“湖北大学”、“湖北,湖北大学,大学”、“湖北,湖北大学,大,大学,学”。盘古分词将多元分词出来的单词根据其词长,词的间隔以及未登录词的取舍等条件给定了不同的权重。在搜索时对分解出来的关键字,我们指定权重来影响搜索结果,以实现结果有效排序。比如搜“湖北大学”时,可以将“湖北大学”设置较高的权重,而“大学”和“湖北”设置较低权重,则包含“湖北大学”的记录就优先于包含“湖北”或“大学”的记录,这样就解决了排序问题。
为了说明盘古分词优于lucene内置分词器,做了如下表格的对比。从表中可以看出,StopAnalyzer针对非字母字符拆分文本,然后小写英文字母,再过滤掉停用词;KeywordAnalyzer将整个文本当作一个词处理;SimpleAnalyzer和StopAnalyzer类似;WhitespaceAnalyzer根据空格拆分词汇单元;StandardAnalyzer按每个汉字拆分词,PanGuAnalyzer按有意义的中文词语分词,显然效果最佳。因而本文选择盘古分词器,提高搜索的准确性。
分词比较的结果如下表1所示。
表1 盘古分词器与lucene内置分词器性能比较
[分词器
结果
分词内容\