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
export JAVA_HOME="Absolute_Path_of_Java_Installation"
建索引:
1)定位到terrier文件夹
cd terrier
2)收集须要建索引的文档
./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文件夹下生成例如以下图:
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>
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搜索引擎的使用相关推荐
- 13 款开源的全文搜索引擎
主要介绍13款现有的开源搜索引擎,你可以将它们用在你的项目中以实现检索功能. 1. Lucene Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经 ...
- 13 款开源的全文检索引擎
http://www.iteye.com/news/27484 1. Lucene Lucene的开发语言是Java,也是Java家族中最为出名的一个开源搜索引擎,在Java世界中已经是标准的全文检 ...
- 深度学习核心技术精讲100篇(十五)-搜索引擎Indri系列之安装及使用
前言 Indri是Lemur项目衍生的一个基于语言模型的新的搜索引擎,由University of Massachusetts和Carnegie Mellon University合作开发. 安装 下 ...
- 深度学习核心技术精讲100篇(十六)-搜索引擎Indri系列之如何建立索引 (Indexing)检索评价 (Evaluation)
前言 在为文档集建立索引时,需要执行IndriBuildIndex path-to-to-index_parameter_file.这里的index_parameter_file是xml格式的参数文件 ...
- 13款开源搜索引擎的介绍
本文档转载自 http://blog.csdn.net/xum2008/article/details/8740063 对现有的开源的搜索引擎的一个简单介绍: Lucene Lucene的开发语言是J ...
- TREC Precision Medicine 使用Terrier进行信息检索
一.实验目标 学会使用一个信息检索系统完成给定的信息检索任务,包括创建索引.选择检索模型并设置参数.评价检索结果等等. 二.实验描述 使用一个信息检索系统,例如Galago.Elastic Searc ...
- 电子设计搜索引擎引入分析和见解
电子设计搜索引擎引入分析和见解 Electronics Design Search Engine Introduces Analytics and Insights 2020年上半年最受欢迎的组件是什 ...
- 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+kibanaV5.4.2+x-packV5.4.2安装
相关博文: 搜索引擎ElasticSearchV5.4.2系列一之ES介绍 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+klanaV5.4.2+x-p ...
- 搜索引擎优化培训教程
很详细的搜索引擎优化培训教材 View more presentations from mysqlops 转载于:https://www.cnblogs.com/macleanoracle/archi ...
最新文章
- 【Android 电量优化】电量优化 ( JobScheduler | JobService | AsyncTask )
- 【数据结构与算法】之深入解析“Excel表列序号和表列名称”的求解思路与算法示例
- 【MySQL】查看 mysql 数据库最后修改时间、创建时间、表大小
- [Xcode 实际操作]六、媒体与动画-(6)使用UIBlurEffect给图片添加模糊效果
- POJ 2398 Toy Storage
- LeetCode 75 颜色分类
- 用 PHP 读取和编写 XML DOM
- 设计模式12-命令模式
- find函数常见错误_终于找到你,查找函数,find必不可少
- 傅立叶变换,时域,频域二
- js的一些function
- RapidXml读取并修改XML文件
- it黑马中学习的mybatis配置
- 网络层 详解,网络层功能,网络层协议,网络层设备。
- 4个高质量站点推荐值得收藏
- 快速拿下CKA认证考试,这些要求和tips你得知道
- Java基础 IP地址
- XML DOM摘要五(XPath)
- Netgear R6220桥接组网设置
- 自己的服务解密,获取微信小程序用户的手机号码