Indri和Terrier搜索引擎的使用
来源:程序员人生 发布时间:2014-11-13 08:37:20 阅读次数:7011次
介绍
Indri和Terrier都是开源的搜索引擎,其中Indri作为Lemur项目的1个重要部份,具有强大的查询接口,易建索引,可扩大,高效力等优点。可以在SourceForge Lemur Project Page中下载。Terrier也是IR领域非常有影响力的开源搜索引擎,Terrier是Glasgow大学用Java语言编写的,具有高效灵活及易于部署等特点,目前最新的版本为Terrier
4.0,可在Terrier官网下载。
不管Indri还是Terrier全部进程,需要先建立索引,然后根据自定义的query phrases(查询短语,固然也能够是句子),在已建立的索引上查询,并返回1个结果,类似以下(后面会具体讲授每列的含义):
两个搜索引擎的使用关键在于它们的配置文件,接下来说解如何配置
文本格式
<DOC>
<DOCNO>2011⑴2-05⑵0_1323118648⑺cfd066125ff1daf479748f81346895d</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> //第1个查询
<number>001</number> //编号自己定义
//如果文本的发布日期在两个时间段之间的,则在其文本中查询“Abbotsford Arts Centre”,根据其内置算法,计算query phrases与文本的相干度值
<text>#scoreif(#datebetween(10/05/2011 01/26/2012) #1(Abbotsford Arts Centre))</text>
</query>
<query> //第2个查询
<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>
Indri查询语言
1、Combining Beliefs
#combine,#weight, #not, #max, #or, #band(boolean and)
#wsum, #wand(weighted and)
#weight( 1 #1(Abbotsford Arts Centre) 0.5 #1(office) 0.5 #1(band))
2、Filter Operators
scoreif(#datebetween(10/05/2011 01/26/2012) #1(Abbotsford Arts Centre))
3、Numeric Field Operator
#less( F N ) matches numeric field extents of type Fif value < N
#greater( F N ), #between(F N_low N_high ) , #equals(F N )
4、Date Field Operator
#dateafter( D ),
#datebefore( D ),
#datebetween( D_low D_high ),
#dateequals( D )
查询结果文件:
其中:
第1列:表示第003query
第2列:不用理睬
第3列:DOCNO
第4列:排名
第5列:具体排序值
第6列:query_id
Terrier
未完待续
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠