搜索引擎
文章平均质量分 53
源远流长
余镇源的技术博客:主要在搜索引擎,大数据,推荐,后端领域
展开
-
向量检索服务迭代演进
背景在搜索推荐系统里,有一个重要的服务是向量检索服务,也就是求向量在空间中最相近的topk个向量,在搜索系统里,涉及大量的召回引擎可能需要用到向量检索服务,需要在线实时计算,并且可快速响应;所以这里需要解决两个问题,一个是存储所有待计算的向量,并对输入的向量,做向量相似度计算,求得最近的向量列表排序,取得top k个;另一个因为要达到在线服务即时响应需求,因为这个是基础服务,所以要做到毫秒级别响应解决方案&迭代演进1、最粗暴的向量KNN计算。原创 2023-01-12 13:06:48 · 680 阅读 · 1 评论 -
solr索引目录与扩展
1.solr 如何读取索引在solrconfig.xml中可以配置solr的索引目录。${solr.data.dir:./solr/data}默认是在目录./solr/data,如果使用分布式的话,这个配置要跟主机一致。 如果有存在文件index.properties,则读取index=index.20101102052813,获得指定的索引目录index.2010110原创 2010-03-23 15:22:00 · 1298 阅读 · 1 评论 -
利用SOLR搭建企业搜索平台
利用SOLR搭建企业搜索平台 之一(运行solr) 在网络上找了很多的关于solr的资料,发现非常的不全面,即使就是官方的wiki,也是如此! 基于现阶段正在研究的solr应用,陆续的会分享我的一些经验! 今天要说的是: 怎么跑起来! 1》 首先下载好solr,我用的是 solr1.3,下载地址: windows版本 http转载 2010-04-07 17:26:00 · 3226 阅读 · 0 评论 -
solr 配置clustering
首先是在solrconfig.xml,添加 name="clusteringComponent" enable="${solr.clustering.enabled:true}" class="org.apache.solr.handler.clustering.ClusteringComponent" >default原创 2010-07-26 18:33:00 · 4450 阅读 · 6 评论 -
使用xpath操作xml(一.入门知识)
<br />基本的XPath语法类似于在一个文件系统中定位文件 <br />1 如果路径以斜线 / 开始, 那么该路径就表示到一个元素的绝对路径。 <br />2 如果路径以双斜线 // 开头, 则表示选择文档中所有满足双斜线//之后规则的元素(无论层级关系) <br />3 星号 * 表示选择所有由星号之前的路径所定位的元素 <br />4 方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素 <br />5 属性通过前缀 @ 来指定转载 2010-06-08 09:50:00 · 892 阅读 · 0 评论 -
solr 配置tika 应用
<br />首先是在solrconfig.xml,添加<br /><!-- Solr Cell: http://wiki.apache.org/solr/ExtractingRequestHandler --> <requestHandler name="/update/extract" class="org.apache.solr.handler.extraction.ExtractingRequestHandler" startup="lazy"> <lst name="defaults原创 2010-08-03 14:52:00 · 6315 阅读 · 6 评论 -
拼写检查的Lucene源码分析
<br />原文出处http://lolorosa.blogbus.com/logs/45646288.html<br /> <br />1. 首先来说一个N-Gram的概念,我不知道中文里怎么称呼这个,从Lucene SpellChecker的实现来看,N-Gram是指将一个单词划分成若干等长的字串,每一个成为一个gram,n就是用来控制每个gram的长度的。<br />2. 对于一个单词我们往往会给不同的N做多次切割,这样便于做搜索建议和拼写检查。<br />3. 构建词典<br /> a转载 2010-08-11 11:39:00 · 1761 阅读 · 0 评论 -
solr 基础知识
<br />一、 醒目显示的查询参数1. q Solr中用来搜索的查询。有关该语法的完整描述,请参阅 参考资料 中的 “Lucene QueryParserSyntax”。可以通过追加一个分号和已索引且未进行断词的字段(下面会进行解释)的名称来包含排序信息。默认的排序是 scoredesc,指按记分降序排序。 q=myField:Java AND otherField:developerWorks; dateasc<br />此查询搜索指定的两个字段并根据一个日期字段对结果进行排序。转载 2010-08-10 10:55:00 · 4292 阅读 · 0 评论 -
用Java实现Google的“您是不是要找”功能
用Java实现Google的“您是不是要找”功能<br /> 作者 Leandro R. Moreira 译者王丽娟 发布于 2010年6月9日 下午10时20分 社区Java主题开放源代码 , 搜索标签Lucene 分享 |<br />引言<br />很多人在使用搜索引擎的时候,会出于各种原因,拼错想要搜索的转载 2010-08-11 13:43:00 · 1837 阅读 · 0 评论 -
solr性能调优
Schema Design Considerations indexed fields indexedfields 的数量将会影响以下的一些性能: 索引时的时候的内存使用量 索引段的合并时间 优化时间 索引的大小 我们可以通过 将 omitNorms=“true” 来减少indexed fields数量增加所带来的影响。 stored fields Retrieving the st转载 2010-08-10 11:07:00 · 5377 阅读 · 1 评论 -
超快速的桌面搜索工具 - EveryThing绿色汉化版
超快速的桌面搜索工具 - EveryThing绿色汉化版是一款速度超级快的NTFS文件搜索工具,能索引和搜索NTFS分区的文件。可以按文件名进行高速搜索文件。支持远程搜索其他计算机上的文件。 相比其他的搜索工具,Everything 无论是体积、索引数据库的大小、还是内存占用都是暂时我所见到最强的!Everything的体积才5百多K,硬盘上有217G的数据,索引数据库仅有2.2MB,而内存占用仅为9M~12M左右,可以说是完胜其他的搜索工具了.<br /><br />Everything转载 2010-08-20 18:32:00 · 2871 阅读 · 0 评论 -
文本特征提取方法研究
<br />文本特征提取方法研究一、课题背景概述<br />文本挖掘是一门交叉性学科,涉及数据挖掘、机器学习、模式识别、人工智能、统计学、计算机语言学、计算机网络技术、信息学等多个领域。文本挖掘就是从大量的文档中发现隐含知识和模式的一种方法和工具,它从数据挖掘发展而来,但与传统的数据挖掘又有许多不同。文本挖掘的对象是海量、异构、分布的文档(web);文档内容是人类所使用的自然语言,缺乏计算机可理解的语义。传统数据挖掘所处理的数据是结构化的,而文档(web)都是半结构或无结构的。所以,文本挖掘面临的首要问题是转载 2010-08-20 15:41:00 · 4285 阅读 · 0 评论 -
最常用的中文停止词(stop word)列表
<br /> public String[] cn_stopword = { "的", "了", "在", "是", "我", "有", "和", "就", "不", "人", "都", "一", "一个", "上", "也", "很", "到", "说", "要", "去", "你", "会", "着", "没有", "看", "好", "自己", "这" }; <br /> <br /> <br />首先,我们看下什么是停止词。停止词,是由英文单词:stop word翻译过来的,转载 2010-08-23 11:59:00 · 24270 阅读 · 1 评论 -
lucene Analyzer
1、抽象类Analyzer<br />其主要包含两个接口,用于生成TokenStream:TokenStream tokenStream(String fieldName, Reader reader); TokenStream reusableTokenStream(String fieldName, Reader reader) ; <br />所谓TokenStream,后面我们会讲到,是一个由分词后的Token结果组成的流,能够不断的得到下一个分成的Token。<br />为了提高性能,使得转载 2010-09-16 11:21:00 · 1960 阅读 · 0 评论 -
solr索引目录与扩展
<br />1.solr 如何读取索引<br />在solrconfig.xml中可以配置solr的索引目录。<br /><dataDir>${solr.data.dir:./solr/data}</dataDir><br />默认是在目录./solr/data,如果使用分布式的话,这个配置要跟主机一致。<br /> <br /> <br />如果有存在文件index.properties,则读取index=index.20101102052813,获得指定的索引目录index.20101102052813原创 2010-11-29 17:35:00 · 3597 阅读 · 0 评论 -
solr 术语
<br />原贴http://www.cnblogs.com/wycg1984/archive/2009/09/16/1567627.html<br /> <br /> <br />Solr 涉及的术语,简单介绍下: Auto-warming(自动预热) 当打开一个新的缓存时,它把在旧缓存里命中较高的键/值添加到新的缓存里。Constraint(限制) 限制对象集的方法。Facet(层面) 对象集的一个方面或特定的一部分,这可以用来资源分类。Filter(过虑器) 它由上下方决定,可能是:<br />1转载 2010-11-29 17:50:00 · 960 阅读 · 0 评论 -
从概念理解Lucene的Index(索引)文档模型
<br />Lucene主要有两种文档模型:Document和Field,一个Document可能包含若干个Field。<br />每一个Field有不同的策略:<br />1.被索引 or not,将该字段(Field)经过分析(Analyisi)后,加入索引中,并不是原文。<br />2.如果被索引,可选择是否保存“term vector”(向量),用于相似检索。<br />3.可选择是否存储(store),将原文直接拷贝,不做索引,用于检索后的取出。<br />Lucene中的文档模型类似于数转载 2010-12-03 17:11:00 · 6657 阅读 · 3 评论 -
《Lucene In Action》第三章.搜索
原文http://www.coder4.com/archives/741主要的类IndexSearcher:搜索的主类。Query(及具体子类):被传入IndexSearcher的search方法,用于逻辑上的搜索。QueryParser:将人工输入的查询字符串转化成Query对象。TopDocs:存储着得分最高的那些文档,由IndexSearcher的search方法返回。ScoreDoc:TopDocs中的每一个文档,他们只保留着Document的引用。转载 2010-12-03 18:42:00 · 2262 阅读 · 0 评论 -
lucene 抛出的异常
String keyword=".......";//(keyword的长度太长)Query indexQuery = new QueryParser("name",analyzer).parse(keyword);有没有人遇到过 上面的查询当 keyword很长时报错的问题?too many boolean clausesQueryParser会将keyword切分为多个TermQuery组成的BooleanQuery.所以当keyword被切成过于1024个时,就会出现刚刚那个异常。查看原因原创 2010-12-03 15:44:00 · 1112 阅读 · 0 评论 -
《Lucene In Action》第四章.Analysis(分词)
原文http://www.coder4.com/archives/761简单来说,Analysis就是把field Text转化成基本的Term的形式。通过分词,将Text转化为Token,Token+对应的Field即为Term。分词的处理包括:萃取、丢弃标点、移除发音、小写、移除常用单词、去除变形(去掉过去时等)等。本章将介绍如何使用内置的分词器,以及如何根据语言、环境等特点创建自己的分词器。4.1 使用Analysis分词用于所有需要将Text转化成Term的场合,在Lucene中主要有两个:1、I转载 2010-12-08 12:04:00 · 1860 阅读 · 0 评论 -
《Lucene in Action》第五章—高级主题
5.1 Filed的Cache有时,存在这样的需求:快速的访问每个Document的Field,但是Lucene只是做了反向索引,因此这种正向索引非常耗时。Stored fields是一种解决方法,但是也很慢,特别当量大的时候,占用很多内存。Field的Cache能很好地解决这个问题。要求Document必须只有一个Token!用法float[] weights = FieldCache.DEFAULT.getFloats(reader, “weig转载 2010-12-08 12:20:00 · 1654 阅读 · 0 评论 -
Lucene Scoring 评分机制
<br />Lucene 评分体系/机制(lucene scoring)是 Lucene 出名的一核心部分。它对用户来说隐藏了很多复杂的细节,致使用户可以简单地使用 lucene。但个人觉得:如果要根据自己的应用调节评分(或结构排序),十分有必须深入了解 lucene 的评分机制。<br />Lucene scoring 组合使用了 信息检索的向量空间模型 和 布尔模型 。<br />首先来看下 lucene 的评分公式(在 Similarity 类里的说明)score(q,d) =转载 2010-12-30 11:56:00 · 1244 阅读 · 0 评论 -
Scaling Solr(Solr的扩展)
Scaling Solr(Solr的扩展)<br />文章分类:Java编程关于Solr可以参考之前的博客或者百度一下。这里主要讲Solr的扩展,包括横向,纵向,以及深度扩展。<br /> <br />Javaeye的排版有问题,将就看吧<br /><br />Solr的扩展(Scaling)<br /> <br />当你的索引数量越来越大,你会发现你的搜索响应时间变得更慢,索引新内容的时间也会越来越长,那么,到了做出一些改变的时候了,幸运的是,solr很好的考虑到了这些情况,你只需要改变你的配置就可以了。转载 2010-12-30 15:25:00 · 1608 阅读 · 0 评论 -
solr 1.4 的分布式请求过程 和 拼写检查过程
<br />solr 1.4 的分布式请求过程<br />rb.shards 这里存放了要分布的机器<br />for( SearchComponent c : components ) {//通知搜索组件准备<br /> c.prepare(rb);<br />}<br />while (非结束状态){<br /> // 调用各组件的分布式处理过程<br /> for( SearchComponent c : components ) {<br /> // the next转载 2010-12-30 18:26:00 · 1292 阅读 · 0 评论 -
抓取百度明星资料
<br />public class BaiduYuLeStar { /** * 保存出错 */ private static StringBuilder noResult = new StringBuilder(); /** * 当前页数 */ private static int pagePos = 1; public static void main(String[] args) { BaiduYuLeStar star = new BaiduYuLe原创 2010-11-19 13:35:00 · 1187 阅读 · 0 评论 -
抓取豆瓣影视信息
<br /><br />public class DoubanBaiKe {<br /><br /> private Logger logger = LoggerFactory.getLogger(this.getClass());<br /> /**<br /> * 豆瓣电影搜索的URL地址<br /> */<br /> private String url = "http://movie.douban.com/subject_search?sea原创 2010-11-19 13:38:00 · 1855 阅读 · 0 评论 -
布署solr 时抛出的一个异常
<br />信息: SolrDispatchFilter.init()<br />2011-1-18 14:29:47 org.apache.solr.core.SolrResourceLoader locateSolrHome<br />信息: Using JNDI solr.home: /diska/solrSearch/solr-video-1.4/<br />2011-1-18 14:29:47 org.apache.solr.core.CoreContainer$Initializer原创 2011-01-18 15:01:00 · 2005 阅读 · 3 评论 -
Lucene的评分(score)机制的简单解释
<br />引自<br />http://www.javaeye.com/wiki/Lucene/1526-lucene-39-s-score-score-a-simple-mechanism-to-explain<br /> <br />通过Searcher.explain(Query query, int doc)方法可以查看某个文档的得分的具体构成。<br /><br />在Lucene中score简单说是由 tf * idf * boost * lengthNorm计算得出的。<br /转载 2011-01-27 15:15:00 · 2290 阅读 · 1 评论 -
Solr 查询中fq参数的解析原理
原文:http://www.30lost.com/archives/22<br />首先看Lucene进行索引查询的一个核心方法:IndexSearcher.java<br />public void search(Weight weight, Filter filter, Collector collector)<br />其中Weight是用来计算查询的权重并生成Scorer(这是一个集合迭代器),它一般由顶层的Query对象使用一个Seacher对象来创建(Query.createWeight(Se转载 2011-02-17 15:38:00 · 7123 阅读 · 1 评论 -
拼写检查设计
1) 词库来源:词库来源在数据库中,以方便扩展,只要每天都会产生一个当天日期相关的搜索词库表,包含相关信息2) 建立索引采用二元循环切词:“背天而驰”->”背天”,”天而”,”而驰”,”驰背”以ConCurrentHashMap>结构存储,其中String为元切出的两个中文字符,CopyOnWriteArrayList存储相应文档,文档有三个属性,数据结构如下:/** * 唯一的标识 */private int id;/** * 文档内容 */private String text;/** * 搜索总数量原创 2011-03-07 10:11:00 · 2894 阅读 · 1 评论 -
记录solr的一些参数配置
在schema.xml 文件中的配置,老是会忘记一些参数的作用,所以得记到博客里,就像一位同事所说,好记性不好烂博客。其中omitnorms这个和文档长短有关搜索时使用的参数的一些作用bf是文档的boost(可以在作索引的时候设置也可以在搜索的时候动态计算 )qf 字段的权重评分(可以在作索引的时候设置也可以在搜索的时候动态计算 )mm 命中多少个term 返回结果再续。。。。原创 2011-02-22 18:43:00 · 4957 阅读 · 1 评论 -
自定义评分器Similarity,提高搜索体验
首先说一下lucene对文档的评分规则: score(q,d) = coord(q,d) · queryNorm(q) ·∑( tf(t in d) · idf(t)2 · t.getBoost() · norm(t,d) )具体可以查看相关文章:http://blog.chenlb.com/2009/08/lucene-scoring-architecture.html这里先考虑三个因素coord(q,d)与tf(t in d),当查询串中,命中的词越多,coord计算的值则越大,原创 2011-03-17 23:04:00 · 8890 阅读 · 1 评论 -
solr一些异常
<br />使用solr1.4跟solr3.1时,配置了个唯一id类型是sint 或者int,启动时在tomcat后台就会抛出这个异常:<br />org.apache.solr.common.SolrException:<br /> QueryElevationComponent requires the schema to have a uniqueKeyField implemented using StrField。<br /> <br />之前都是将sint或者int换为StrField类型解决问原创 2011-05-17 16:31:00 · 1986 阅读 · 0 评论 -
solr search过程
<br />原文:http://www.cnblogs.com/mandela/archive/2011/05/10/2041754.html<br /> <br />Search步骤<br />a.SolrParams参数准备<br />q – 查询语句<br />sort – 排序字段&排序方式<br />rows – 返回多少条 start – 起始点<br />fl – 返回字段,需要返回scorer字段的话这个KEY对应的VALUE里包含”score”就可以了<br />q转载 2011-05-20 11:55:00 · 3337 阅读 · 1 评论 -
探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤
原文:http://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy2/集体智慧和协同过滤什么是集体智慧集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web 应用中利用集体智慧构建更加有趣的应用或者得到更好的用户体验。集体智慧是指在大量的人群的行为和数据中收集答案,帮助你对整个人群得到统计意义上的结论,这些结论是我们在单个个体上无法得到的,它往往转载 2011-04-01 14:25:00 · 1324 阅读 · 0 评论 -
搜索引擎的未来
搜索引擎的未来是什么?笔者认为,未来的搜索有两个趋势:个性化,社会化。以下笔者将详细论述。(注:本文给出的很多链接需要特殊方式才可以访问,请自行解决) 从google诞生的那一天起,google的搜索本质上并没有什么变化,依旧是:一个大大的搜索框,你敲进去几个词,google给出一些相关的网页。 现在的问题是: 1. 为什么每个人搜出的结果都一样?不同的人对于同一个关键词所期待的搜索结果可能有很大差别啊? 2. web2.0早已深入到了互联网的各个角落,以face转载 2011-04-12 10:40:00 · 1162 阅读 · 0 评论 -
Solr Cache使用介绍及分析
<br /> <br />原文:http://www.cnblogs.com/wycg1984/archive/2010/08/02.html<br /> <br />本文将介绍Solr查询中涉及到的Cache使用及相关的实现。Solr查询的核心类就是SolrIndexSearcher,每个core通常在 同一时刻只由当前的SolrIndexSearcher供上层的handler使用(当切换SolrIndexSearcher时可能会有两个同时提供服 务),而Solr的各种Cache是依附于Sol转载 2011-04-28 11:49:00 · 2027 阅读 · 0 评论 -
Lucene Similarity (Lucene 文档评分score机制详解)
查看文章 翻译:Lucene Similarity (Lucene 文档评分score机制详解)2008-11-28 19:09<br />文档的分值代表了该文档在特定查询词下对应的相关性高低,他关联着信息检索向量空间模型中的向量夹角的接近度。一个文档越与查询词相关,得分越高。分值计算公式如下:<br />score(q,d) = coord(q,d) · queryNorm(q) · ∑ ( tf(t in d) · idf(t)2 · t.getBo转载 2011-05-04 17:40:00 · 4993 阅读 · 0 评论 -
FieldOptionsByUseCase
http://wiki.apache.org/solr/FieldOptionsByUseCaseHere is a summary of available options on a field, broken down by use case. Atrue转载 2011-09-02 15:16:27 · 717 阅读 · 0 评论 -
lucene的学习----范围查询
对于lucene的范围查询,可以使用RangQuery,或者使用RangFilter。但对于RangQuery有个缺点,可能导致异常TooManyClause异常。因为对于不同的Query,最后都是转化为TermQuery.而RangQuery,就是将这个原创 2011-09-04 20:53:18 · 1610 阅读 · 0 评论