Indri和Terrier搜索引擎的使用
介绍
Indri和Terrier都是开源的搜索引擎,当中Indri作为Lemur项目的一个重要部分,具有强大的查询接口,易建索引,可扩展,高效率等长处。能够在SourceForge Lemur Project Page中下载。Terrier也是IR领域很有影响力的开源搜索引擎,Terrier是Glasgow大学用Java语言编写的,具有高效灵活及易于部署等特点,眼下最新的版本号为Terrier
4.0。可在Terrier官网下载。
不管Indri还是Terrier整个过程,须要先建立索引,然后依据自己定义的query phrases(查询短语。当然也能够是句子),在已建立的索引上查询,并返回一个结果。类似例如以下(后面会详细解说每一列的含义):
<DOC>
<DOCNO>2011-12-05-20_1323118648-7cfd066125ff1daf479748f81346895d</DOCNO>
<date>12/05/2011 (MM/DD/YYYY)</date>
<SOURCE>arxiv</SOURCE>
<TEXT> S and Λ production in pp interactions at √s = 0.9 and 7 TeV measured with the....</TEXT>
</DOC>
1、Indri
Indri建索引
<parameters>
<memory>16G<memory>
<index>path/to/index</index> //建完索引后,这些索引结果文件存放的位置,如/home/tempUser/myindex
<stemmer>
<name>krovetz</name> //词干化工具,也即分词,这个是默认的,能够选择其它的
</stemmer> <corpus>
<path>path/to/original/file/directory</path> //原始须要建立索引的文件文件夹
<class>trectext</class> //须要建立什么格式的索引,有xml, txt, trectext, web
</corpus> <field>
<name>DOCNO</name> //文本ID号
</field> <field> //假设须要用到时间信息,需加此field。
<name>date</name>
<numeric>true</numeric>
<parserName>DateFieldAnnotator</parserName>
</field>
</parameters>
Indri查询
<span style="font-size:14px;"><parameters>
<index>path1/to/index</index>
<index>path2/to/index</index>
<rule>method:dirichlet,mu:1000</rule> //内置方法,用狄利克雷,參数值1000
<count>1000</count> //每一个查询值返回1000条记录,能够自己设置 <query> //第一个查询
<number>001</number> //编号自定义
//假设文本的公布日期在两个时间段之间的,则在其文本中查询“Abbotsford Arts Centre”,依据其内置算法。计算query phrases与文本的相关度值
<text>#scoreif(#datebetween(10/05/2011 01/26/2012) #1(Abbotsford Arts Centre))</text>
</query>
<query> //第二个查询
<number>003</number>
<text>#scoreif(#datebetween(10/05/2011 08/08/2012) #1(Andy Billig))</text>
</query> <trecFormat>true</trecFormat>
<queryOffset>1</queryOffset>
<runID>query_id</runID> //自定义queryID
</parameters></span>
2、Terrier
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3pnYW5nMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
export JAVA_HOME="Absolute_Path_of_Java_Installation"
建索引:
1)定位到terrier文件夹cd terrier2)收集须要建索引的文档./bin/trec_setup.sh "Absolute_Path_To_Collection_Files"这里须要指定绝对路径。比方须要建索引的文件集在/home/hadoop/kba/kba2014/trecdata/2011-10文件夹下(该文件夹下都为文件。不是文件夹,Files已经是最后一层文件夹了),
则上面的Absolute_Path_To_Collection_Files即为 /home/hadoop/kba/kba2014/trecdata/2011-10执行后在etc文件夹下生成例如以下图:watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3pnYW5nMTIz/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
collection.spec里面的内容例如以下:
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-01.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-03.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-05.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-07.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-08.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-11.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-12.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-13.trectext
/home/hadoop/kba/kba2014/trecdata/2011-10/2011-10-05-14.trectext

#default controls for query expansion
querying.postprocesses.order=QueryExpansion
querying.postprocesses.controls=qe:QueryExpansion
#default controls for the web-based interface. SimpleDecorate
#is the simplest metadata decorator. For more control, see Decorate.
querying.postfilters.order=SimpleDecorate,SiteFilter,Scope
querying.postfilters.controls=decorate:SimpleDecorate,site:SiteFilter,scope:Scope #default and allowed controls
querying.default.controls=
querying.allowed.controls=scope,qe,qemodel,start,end,site,scope #document tags specification
#for processing the contents of
#the documents, ignoring DOCHDR
TrecDocTags.doctag=DOC
TrecDocTags.idtag=DOCNO
TrecDocTags.skip=DOCHDR
#set to true if the tags can be of various case
TrecDocTags.casesensitive=false #query tags specification
TrecQueryTags.doctag=TOP
TrecQueryTags.idtag=NUM
TrecQueryTags.process=TOP,NUM,TITLE
TrecQueryTags.skip=DESC,NARR #stop-words file
stopwords.filename=stopword-list.txt #the processing stages a term goes through
termpipelines=Stopwords,PorterStemmer
<DOC>
<DOCNO>id</DOCNO>
<TEXT>text content</TEXT>
</DOC>
<TOP>
<NUM>003</NUM> //这个相当于你自己给这个query定一个id。所以能够随便写
<TITLE>"Abbotsford Arts Centre" office band "Abbotsford Arts Centre May" company "Abbotsford Arts Centre" </TITLE> //Query Phrases
</TOP>
indexer.meta.forward.keylens=120 //你能够自己定义长度
collection.spec=/absolute/path/to/your.spec
terrier.index.path=/absolute/path/to/index/path //你想把你的建好的index放在哪个文件夹
trec.results.file=/absolute/path/to/resultfile.res //你想想把你的query结果放在哪个文件
ignore.low.idf.terms=false //假设某个词的逆文档频率idf非常低,还是要考虑,而不是丢弃
matching.retrieved_set_size=40000 //query后结果有多少条,假设test.query文件写了非常多个query,那么这么多个query的返回的结果不大于40000,注意此时不是单个query的结果数
./bin/trec_terrier.sh -r -Dtrec.model=PL2 -c 10.99 -Dtrec.topics=/path/to/your.query
-r表示retrieve,
-Dtrec.model表示用什么model去检索,这里用到了PL2模型。详细可在 terrier weighting model中查看
-c表示參数,后面10.99表示參数值
-Dtrec.topics表示your.query文件的详细路径
假设有多个索引文件。多个不同的query。怎么办?
比方对5个文件集分别建立索引,有5个query分别要在相应的索引文件中面找怎么办,因为是共用terrier.properties配置文件的。
所以你能够通过写一个shell脚本。针对不同的文件集。配置相应的collection.spec, terrier.index.path, trec.results.file.
终于得到的结果和开头indri的结果类似。
3、Indri和Terrier注意点
Indri和Terrier搜索引擎的使用的更多相关文章
- 01 Apache Solr:提升检索体验 为什么是Solr
背景: 最近开发一个大型的仓储管理平台项目,项目的前身是无数个版本的历史悠久的基于CS模式的Windows桌面程序.然后对于每一个客户,我们可能需要为之定制比较个性化的特殊功能.于是,有一个 ...
- [IR] Open Source Search Engines
From:http://blog.csdn.net/xum2008/article/details/8740063 本文档是对现有的开源的搜索引擎的一个简单介绍 1. Lucene Lucene ...
- Indri中的动态文档索引技术
Indri中的动态文档索引技术 戴维 译 摘要: Indri 动态文档索引的实现技术,支持在更新索引的同时处理用户在线查询请求. 文本搜索引擎曾被设计为针对固定的文档集合进行查询,对不少应用来说,这种 ...
- Livecoding.tv2.5发布,增加“用户搜索引擎”功能,方便用户找到匹配的程序员
近日,在Livecoding.tv最新发布的博客中,介绍了该平台2.5版的一系列新功能,其中的User Discovery Engine(用户搜索引擎)受到大家的欢迎.使用该引擎,可以很方便地查找在L ...
- Nutch搜索引擎(第1期)_ Nutch简介及安装
1.Nutch简介 Nutch是一个由Java实现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行查询的一 ...
- HTML <meta> 标签,搜索引擎
关于Mate标签的详尽解释,请查看w3school 网址为:http://www.w3school.com.cn/tags/tag_meta.asp meta标签作用 META标签是HTML标记HEA ...
- Java Web学习笔记---用GET实现搜索引擎
今天做了一个实验,关于Servlet的.使用GET实现搜索引擎.因自己没有搜索引擎数据库,所以使用了Yahoo提供的Search API. 浏览效果如下图: 现在雅虎推出了新的Search API-- ...
- 转载自lanceyan: 一致性hash和solr千万级数据分布式搜索引擎中的应用
一致性hash和solr千万级数据分布式搜索引擎中的应用 互联网创业中大部分人都是草根创业,这个时候没有强劲的服务器,也没有钱去买很昂贵的海量数据库.在这样严峻的条件下,一批又一批的创业者从创业中获得 ...
- 9个基于Java的搜索引擎框架
在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广 ...
随机推荐
- (转)浅谈测试驱动开发(TDD)
测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了代码,又保证了软件质量.本文从开发人员使用的角度,介绍了 TDD 优势.原理.过程.原则.测试技术.Tips 等方面. ...
- 对linux中source,fork,exec的理解以及case的 使用
fork 使用 fork 方式运行 script 时, 就是让 shell(parent process) 产生一个 child process 去执行该 script, 当 child proc ...
- gg mirror
https://gufen.ga/ (无广告,原guso.ml,ggso.ga,guge.ga) https://a.aiguso.tk (无广告,体验良好) https://a.freedo.gq/ ...
- css3盒子模型及其定位
盒子模型常见相关属性和属性取值 /*基本属性*/ padding: padding-left/right/top/bottom border: border-left/right/top/bottom ...
- websphere8.5 与cxf2.x冲突问题
一个客户was部署的小问题,记录一下. 问题现象 在我们的服务中用调用别人的webservice服务报错,框架用的cxf. 报错关键信息有: E com.ibm.ws.webcontainer.web ...
- Caffe 编译: undefined reference to imencode()
本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/52150781 整理之前编译工程中遇到的 ...
- spring配置mybatis3
mybatis官方网站:http://www.mybatis.org/mybatis-3/zh/configuration.html <!--第一步:加载配置数据库相关参数--> < ...
- xcode错误-第三方的东西他不支持
ld:' /用户/ tanqihong /桌面/金粒子公司/金粒子公司/ Carloans / Carloans /第三/ TongLianPay / lib_release / libAPayLib ...
- [BZOJ4994] [Usaco2017 Feb]Why Did the Cow Cross the Road III(树状数组)
传送门 1.每个数的左右位置预处理出来,按照左端点排序,因为左端点是从小到大的,我们只需要知道每条线段包含了多少个前面线段的右端点即可,可以用树状数组 2.如果 ai < bj < bi, ...
- ci框架——数据库(增删改查)
1:配置数据库(application/config/database.php)修改 $db['default'] = array( 'dsn' => '', 'hostname' => ...