
搜索与挖掘
文章平均质量分 82
quzishen
一个程序员,长期满足于代码世界,享受手指敲击键盘带来的愉悦感,混迹于支付宝、网易、淘宝,目前从事于无线领域研究。
本人没有使用该博客开通任何微博,本人唯一新浪微博:http://weibo.com/quzishen
其他同名微博皆为盗用信息,请勿相信其任何与本人有关信息
展开
-
[lucene]使用lucene建立网站搜索服务
<br />lucene是一个全文检索引擎(非分布式),使用java编写并且可以很方便的嵌入到各种系统中以实现全文检索功能,其通过对字符串进行分词,然后针对分词结果分别建立索引,存入内存或者磁盘,以提供搜索服务,这个功能用起来就像是一个单机版的google,模糊匹配的结果会被展示给用户。应用lucene较为出名的就包括了eclipse的帮助系统。<br />很多时候搜索这个概念会含糊不清,通常意义上对于一个网站的搜索功能是针对于从数据库中捞取数据并通过freemarker或者velocity渲染模板后展示出原创 2010-08-07 04:38:00 · 4934 阅读 · 3 评论 -
[lucene]初探bobo-browse
<br />Bobo-browse是一个基于lucene的分面搜索插件,可以完成对搜索结果的分面统计,比如“男装(221) 女装(332)”等。<br />这里做首次尝试,只谈使用,不谈原理。用熟了才有可能去研究仔细。<br />lucene3 + bobo-browse2.5<br />建索引,更新索引跟它没关系,仅关注搜索。索引建立好后,开始进行分面搜索。<br />bobo-spring.xml <br /><?xml version="1.0" encoding="UTF-8"?><bean原创 2011-01-07 16:15:00 · 3483 阅读 · 2 评论 -
[lucene]索引建立
<br />Lucene索引建立的过程,类似于将数据进行关键字提取,设置标签,在后续工作中,可以通过这个标签进行内容过滤获取期望数据的操作。<br />lucene建立索引过程很简单,归结起来,就是:<br />获取数据 -> 设置建立索引规则 -> 建立索引 -> 写入磁盘/内存<br />建立索引涉及几个类:<br />1、 IndexWriter<br />执行索引写操作,并且控制索引建立过程的各种参数。包括参数:<br />1)索引存放位置<br />索引存放位置有两种:磁盘 和 内存<br />所原创 2010-12-30 14:32:00 · 3777 阅读 · 0 评论 -
[Lucene那点事儿]建立索引的一点想法
<br />Lucene建立索引的时候,需要使用到分词器-Analyzer,分词器的作用就是将当前的文本按照分词规则进行分词,然后建立索引,检索结果的精确度很大程度上来自于索引的建立是否合理而准确。<br />lucene提供了一些内置的分词器: * SimpleAnalyzer 这个分词是一段一段话进行分 * StandardAnalyzer 标准分词拿来分中文和ChineseAnalyzer一样的效果 * PerFieldAnalyzerWrapper 这个很有意思,可以封装很多分词方式,还可原创 2010-10-09 10:00:00 · 3647 阅读 · 1 评论 -
[lucene那点事儿]想说爱你很容易
<br />内容提要:<br />---------------------目录开始--------------------<br />1、索引精确刷新问题<br />2、利用缓存提高索引批量更新拦截器的性能<br />3、针对不同的数据来源建立不同的索引并分域存放<br />4、引入xml配置文件的方式实现索引建立的动态配置<br />5、单值搜索、组合条件搜索等多种搜索功能的实现<br />6、其他以及单元测试<br /> ------------------------目录完-------------原创 2010-08-16 21:35:00 · 1978 阅读 · 1 评论 -
[lucene那点事儿]继承RangeFilter编写数字型过滤器
Lucene提供了多种针对于区间的查询的实现方式,诸如RangeQuery和RangeFilter等,通常而言,RangeQuery是最容易联想的方式,使用起来很非常的简单,但是,使用它却很容易出现TooManyClause exception,我在另一篇文章http://blog.youkuaiyun.com/quzishen/archive/2010/08/17/5818068.aspx 已经讲述了出现这个问题的原因。而且,这种方式很容易造成内存溢出,使系统的运行受到严重影响。所以推荐的,是使用RangeFilte原创 2010-08-18 12:56:00 · 4661 阅读 · 4 评论 -
[lucene异常]why am I getting a TooManyClause exception
<br /><br />异常情况:<br />org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 1024<br /> at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:165)<br /> at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:156)<b原创 2010-08-17 14:17:00 · 4085 阅读 · 0 评论 -
[lucene第三季]Lucene那点事儿-总结篇
<br />前面两篇文章,简单尝试了lucene的一些应用,还是再回头想想我们的需求吧,我们希望能够开发一个淘宝一样的针对商品的搜索服务,提供多种条件的组合搜索,并且对于性能提出了一定的要求。同时我们希望这个小型的搜索引擎具有一定的通用性,也就是在可以预见的将来,我们可能用它进行店铺等信息的搜索,所以在我们的搜索代码中,不能织入特定的业务逻辑代码,而应该进行一定的抽象,抽离出一个通用的模型。<br />我们的需求很简单:<br />1、单值搜索<br />2、单值分页搜索<br />3、组合条件搜索<br原创 2010-08-13 13:33:00 · 2081 阅读 · 0 评论 -
[lucene]倒排笔记
<br />lucene的倒排算法相关笔记:<br />·计算文章中关键字出现的位置以及出现频率,以便于精准定位。<br />·百度的定义:用记录的非主属性查找记录而组织的文件,叫倒排文件,或者 倒排索引,次索引<br />·lucene不使用B树,按照字母排序,所以使用二分法快速定位,效率高。<br />·lucene 有字典文件,频率文件,位置文件,其中字典文件保存有指向频率文件和位置文件的指针,可以以此找到频率信息和坐标信息。<br />·索引结构:<br />【关键字】 【文章号】/【出现频率】 【原创 2010-08-10 16:33:00 · 1143 阅读 · 0 评论 -
[lucene第二季]利用缓存辅助精确更新索引
在上一篇的lucene的入门篇中,我们编写了一个帮助系统,从数据库中将具体的信息获取出来并使用CJKAnalyzer分词后建立索引,提供针对于关键字的搜索服务,其中我们采用定时器的方式每隔10分钟更新一次索引,更新的方式为先删除所有的索引,然后重新建立索引。这样的做法效率低下,直接限制了应用场景的小数据量化,一旦数据量较大,则删除索引和建立索引所带来的系统性能的耗费与搜索本身的开销相比得不偿失。现在我们将改进一下这个刷新机制,同时采用一些其他手段来提高搜索的效率。我们希望每次的索引的更新,只更新那些修改过的原创 2010-08-10 14:32:00 · 3027 阅读 · 4 评论 -
将PC站点的链接转换成对应WAP站点的链接
最近做了一个项目,需要做到这个事情,将一些网站的链接转换成其对应wap站点的链接,比如将凡客诚品的商品链接,转换成对应的wap站点的地址,这样就可以直接在手持设备上直接访问。这里代码备份一下。 <!-- name : 配置的名称,用于标原创 2011-09-08 11:05:48 · 11702 阅读 · 2 评论