搜索

lucene 自定义评分 影响排序

寵の児 提交于 2020-04-15 23:27:10
【推荐阅读】微服务还能火多久?>>> 前记 这段时间需要修改一个别人写的一个搜索有关的项目,恰好底层使用的是lucene搜索框架。 为什么要去修改呢,当然是搜索结果不太令人满意啦,于是去研读了项目中关于搜索的代码。。。。。。 正文 经过了几天代码的研读,最终总结出来了几条问题: 创建索引的过程,相当简单,感觉仅仅是把lucene当成关键词匹配的工具去了(需要修改索引策略) 搜索的过程也是比较简单,没有结合项目的需求,定制化搜索(搜索策略需要修改) 额,感觉上面两条好像是在说废话,感觉lucene的和核心就是索引和搜索 为了能尽快解决问题,初步修改就定为了: 索引阶段,将信息分成多个域,同时根据域的重要程度,加入权重。还有就是加入搜索结果排序要使用的字段(分域,权重,加入排序字段) 搜索阶段 根据类别搜索不同的域,同时加入自定义评分 下面就简单的说一下自定义评分: 我用的是lucene是: <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>4.10.2</version> </dependency> 上网查了很多的资料,发现lucene实现自定义评分是通过在构建查询的时候加入的,操作起来很方便。直接上代码吧: public class

以骆驼祥子为例研究2018年数据库与索引技术的变化[图]

感情迁移 提交于 2020-02-29 01:35:14
我们都知道,骆驼祥子是老舍的一部优秀的长篇小说,在初中阶段我们都学习过吧,那么今天, 我就以骆驼祥子为例,来分析一下2018年在建站的过程中,对于数据库和索引技术方面,百度和谷歌等搜索巨头有哪些变化,以此来帮助我们更好的优化数据库结构,少走一些弯路。 博客程序我是接触的比较早的,可能是因为我是小白,在技术方面没有什么强项,因此在建站的过程中,我一般都采用博客程序,当然了,你可以选择ZLBOG或者wordpress都可以,这两款程序系统是我比较喜欢用的,不过我不喜欢用PHP建站,因为技术方面存在一些难题,尤其是配合MYSQL数据库问题上。 好了,下面说些实在点儿的,首先是环境配置问题,关注程序、系统、数据库、站点主题方面的。 我的博客是用ZBLOG建设的,取名叫百家笔记网,程序方面选择的是非常成熟的ASP语言,数据库嘛,还是喜欢界面性的比较适合我们操作,因此用了微软的sql server2008版本,这个版本比较成熟,之前我也分析过,关于2008版本以后的数据库都存在缓存重启服务器后会导致自增字段跳跃1000及10000数值的毛病,这对于我们博客来说,本来数据库就不多,一下子跳跃这么大,是很头疼的。以“骆驼祥子http://www.simayi.net/dushubiji/896.html好词好句读书笔记摘抄”为例,这是我在2018年2月23日发布的一篇文章,但是在搜索上的表现比较好

[转]成为高效程序员的搜索技巧

社会主义新天地 提交于 2020-02-28 21:53:12
文章作者: 纸口杯 本文地址: http://www.y513.com/201102807.html 版权所有 © 转载时必须以链接形式注明作者和原始出处! 对于缺乏编程知识的人来说,完全有可能编写一个网页或小程序。如果在用Google搜索相关示例时幸运的话,可以搜到现成的代码。即使是经验丰富的程序员,通常也会为了节省时间和精力而在网上搜索解决方案。 如果不借助搜索技术、网络及集体智慧,现代化高效编程是难以想象的。因此,搜索技巧对高效程序员变得愈发重要。 现在,我们不需要了解和记住如何解决众多的编程问题,可以采用搜索技术。我们正变得更加高效、高生产力,并能够解决更多的问题。但这是否意味着在构建软件时,拥有好的搜索技巧就足够了呢?本文将讨论, 搜索技巧在程序员知识的形成过程中的作用,以及如何高效使用搜索技巧。 知识的类型及它在程序员大脑中如何成长。 有三类知识: 概念知识 (为什么、是什么、如果—— 语义上的)——理解软件系统构建过程中的概念、原理、关系及主要方法。根据这类知识,能够找出体系结构或代码必须按特定方式设计的原因,以及从中选择最佳 设计方案的备选方案和逻辑是什么。概念知识,不是指用特定编程语言解决特定问题,而是对问题的长远看法和理解。 用途:对复杂的开放式问题寻找新的解决方案,并创建稳健的软件系统。 收获:学习计算机科学、体系结构以及编程概念,在实际实现和经验的基础上

python glob module和 python通配符操作

不想你离开。 提交于 2019-12-25 18:27:09
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> >>> import glob #上面glob 是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作 >>> print glob.glob(os.path.join('c:\\mydir\', "*.png")) File "<stdin>", line 1 print glob.glob(os.path.join('c:\\mydir\', "*.png")) ^ SyntaxError: EOL while scanning string literal #上面win路径要用\\作为分隔 >>> print glob.glob(os.path.join('c:\\mydir\\', "*.png")) ['c:\\mydir\\\PIC_01.png', ' c:\\mydir\\\PIC_02 .png' ] #上面展示用glob通配符操作获取指定目录下指定后缀的文件 >>> print os.path.join('c:\\mydir\\', "*.png") c:\mydir\*.png >>> #上面是未经 glob处理 本人文章除注明转载外,均为本人原创或编译 欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区

我封装的全文检索之lucene篇

南楼画角 提交于 2019-12-17 21:33:38
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 最近利用晚上下班还有周末的时间自己捣腾的封装了一个我自己的全文检索引擎(基于lucene和solr).现在将大概的思路给写出来,分享下: 1.首先是索引对象,也可以说是查询的VO对象.封装了几个常用字段(如:主键,所属者ID,所属者姓名,进入详情页面的link,创建时间等),其他各个模块的字段(如:标题,内容,邮箱等) SearchBean.java 字段的代码如下: /********以下 共有字段***********/ /** * 检索的内容 */ protected String keyword; /** * 拥有者ID */ protected String owerId; /** * 拥有者name */ protected String owerName; /** * 检索对象的唯一标识位的值 */ protected String id; /** * 检索出对象后进入详情页面的链接 */ protected String link; /** * 创建时间 */ protected String createDate; /** * index类型 */ protected String indexType; //setter,getter方法省略 /********以上 共有字段*********

Lucene相似搜索组件MoreLikeThis原理与代码分析

折月煮酒 提交于 2019-12-09 19:55:00
MoreLikeThis 是 Lucene 的一个捐赠模块,为其Query相关的功能提供了相当不错扩充。MoreLikeThis提供了一组可用于相似搜索的接口,已方便让我们实现自己的相似搜索。 什么是相似搜索: 相似搜索按我个人的理解,即:查找与某一条搜索结果相关的其他结果。它为用户提供一种不同于标准搜索(查询语句—>结果)的方式,通过一个比较符合自己意图的搜索结果去搜索新的结果(结果—>结果)。 MoreLikeThis 设计思路分析: 首先,MoreLikeThis 为了实现与Lucene 良好的互动,且扩充Lucene;它提供一个方法,该方法返回一个Query对象,即Lucene的查询对象,只要Lucene通过这个对象检索,就能获得相似结果;所以 MoreLikeThis 和 Lucene 完全能够无缝结合;Solr 中就提供了一个不错的例子。 MoreLikeThis 所提供的 方法如下: /** * Return a query that will return docs like the passed lucene document ID. * * @param docNum the documentID of the lucene doc to generate the 'More Like This" query for. * @return a query

SOLR4.2+NUTCH1.6

点点圈 提交于 2019-12-05 04:40:22
1、SOLR4.2集成NUTCH1.6 wget http://archive.apache.org/dist/lucene/solr/4.2.0/solr-4.2.0.tgz tar -xzvf solr-4.2.0.tgz cd solr-4.2.0/example 复制 nutch 的 conf 目录中的 schema-solr4.xml 文件到 solr/collection1/conf 目录,改名为 schema.xml ,覆盖原来文件 修改 solr/collection1/conf/schema.xml ,在 <fields> 下增加: <field name="_version_" type="long" indexed="true" stored="true"/> 2、给SOLR4.2配置中文分词器word分词 参考 https://github.com/ysc/word 的 Solr插件 部分 3、运行SOLR4.2 启动 SOLR4.2 服务器: java -jar start.jar & SOLR4.2 Web 界面: http://host2:8983 4、运行NUTCH提交索引 运行 solrindex命令 : bin/nutch solrindex http://host2:8983/solr data/crawldb -linkdb data

lucene入门

做~自己de王妃 提交于 2019-12-04 15:05:04
#lucene 对于从来没有接触过lucene的开发人员可能对lucene比较的恐惧,第一点,lucene的发展是相当快的,API在不断的更新当中,第二点,lucene并不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,lucene的目的只是为软件开发人员提供一个简单易用的工具包。但是呢,如果只是想使用lucene,而不是专门做搜索引擎,使用lucene开发是非常简单的,这是官网给的一个例子(lucene6.1.0): 创建索引: //创建一个标准的分析器(这个分析器不支持中文) Analyzer analyzer = new StandardAnalyzer(); // 在内存中创建一个目录 Directory directory = new RAMDirectory(); // 在磁盘中创建一个目录(最常用) //Directory directory = FSDirectory.open("/tmp/testindex"); //创建一个索引Writer配置 IndexWriterConfig config = new IndexWriterConfig(analyzer); //创建一个索引Writer IndexWriter iwriter = new IndexWriter(directory, config); //创建一个文件 Document doc =

Android Bluetooth 学习(2)应用层实现蓝牙设备查找、tcp_ip通信

旧巷老猫 提交于 2019-12-02 18:01:25
Bluetooth结构 1、JAVA层 frameworks/base/core/java/android/bluetooth/ 包含了bluetooth的JAVA类。 2、JNI层 frameworks/base/core/jni/android_bluetooth_开头的文件 定义了bluez通过JNI到上层的接口。 frameworks/base/core/jni/android_server_bluetoothservice.cpp 调用硬件适配层的接口system/bluetooth/bluedroid/bluetooth.c 3、bluez库 external/bluez/ 这是bluez用户空间的库,开源的bluetooth代码,包括很多协议,生成libbluetooth.so。 4、硬件适配层 system/bluetooth/bluedroid/bluetooth.c 包含了对硬件操作的接口 system/bluetooth/data/* 一些配置文件,复制到/etc/bluetooth/。 还有其他一些测试代码和工具。 一、简略介绍Bluetooth开发使用到的类 1、BluetoothAdapter,蓝牙适配器,可判断蓝牙设备是否可用等功能。 常用方法列举如下: cancelDiscovery() ,取消搜索过程,在进行蓝牙设备搜索时,如果调用该方法会停止搜索

LIRE的使用:搜索相似的图片

爷,独闯天下 提交于 2019-11-30 10:07:39
LIRE(Lucene Image REtrieval)提供一种的简单方式来创建基于图像特性的Lucene索引。利用该索引就能够构建一个基于内容的图像检索(content- based image retrieval,CBIR)系统,来搜索相似的图像。LIRE使用的特性都取自MPEG-7标准: ScalableColor、ColorLayout、EdgeHistogram。 搜索相似图片的方法 使用 ImageSearcherFactory 创建 ImageSearcher。例如ImageSearcherFactory.createDefaultSearcher()。 ImageSearcher 可以通过 InputStream 或 BufferedImage,或者一个描述图像的Lucene的 Document 进行检索。 例如使用search(BufferedImage, IndexReader) 或者search(Document, IndexReader). 返回的结果是一个 ImageSearchHits 类似于Lucene 中的Hits。 /** * Simple image retrieval with Lire * @author Mathias Lux, mathias <at> juggle <dot> at */ public class Searcher {