查询参数

index

Indri索引库路径。在参数文件中像/path/to/repository这样指定,在命令行中像-index=/path/to/repository这样指定。该参数可以设置多次来组合多个索引库。

server

运行Indri的服务器主机名(IndriDaemon)。在参数文件中如hostname方式指定,在命令行中像-server=hostname这样来指定。主机名可以指定一个可选的商品号用来连接,用hostname:portnum这种形式。该参数可以指定多次来组合多个服务器。

count

整数值,设置给定查询返回的最大结果数。在参数文件中如number设置,在命令行中如-count=number设置。

query

需要执行的indri查询语言的query,可指定多个。

rule

指定应用的平滑规则(TermScoreFunction),格式如下:

( key ":" value ) [ "," key ":" value ]*

下面是一个命令行的规则格式:

-rule=method:linear,collectionLambda:0.2,field:title

参数文件中格式:

method:linear,collectionLambda:0.2,field:title

代表利用Jelinek-Mercer平滑(Jelinek-Mercer平滑方法是在最大似然模型和文档集模型上进行线性插值),且背景lambda值为0.2,并只在title字段中查找。

如果某项规则键(key)没有设置,则默认采用所有值。因此,如果一个规则没有指定字段,那么会匹配所有字段,故-rule=method:linear,collectionLambda:0.2是一个合法的规则。

合法的规则键有:

method:平滑方法 (text)

field:规则应用字段

operator:应用的查询项类型{ term, window }

合法的平滑方法有:

dirichlet:(also 'd', 'dir') (default mu=2500)

jelinek-mercer:(also 'jm', 'linear') (default collectionLambda=0.4, documentLambda=0.0), collectionLambda is also known as just "lambda", either will work

twostage:(also 'two-stage', 'two') (default mu=2500, lambda=0.4)

如果规则没有正确解析,默认为Dirichlet, mu=2500.

stopper

一个复杂的元素,包含了一个或多个word子元素,用于指定所使用的停止词列表。用如下方法指定: stopword (参数文件),-stopper.word=stopword (命令行). 这是一个可选参数,默认为不采用停止词。

maxWildcardTerms

(可选项) 整数值,用于为查询或者查询集的同义词列表指定特殊符号项(wildcard term)的最大数量。如果限定为一项,会抛出异常。如果没有设置值,默认为100。

基准检索(非语言模型)

baseline

指定所应用的基准检索方法(非语言模型),这使得那些对于Lemur RetMethod API过大的语料,也能在这些语料上运行基准实验。当运行基准实验时,查询词不能包含任何indri检索符,只能包括词项。

参数值的格式:(tfidf|okapi) [ "," key ":" value ]*

命令行格式例子:-baseline=tfidf,k1:1.0,b:0.3

参数文件例子:tfidf,k1:1.0,b:0.3

Methods:

tfidf:用tfidf评分来实施检索,如lemur::retrieval::TFIDFRetMethod实现的使用BM25TF词项加权。在如下参数下,可实施伪相关反馈。

参数 (可选):

k1 k1词权重,默认为1.2

b b词权重,默认为0.75

okapi:用Okapi评分来实施检索,如lemur::retrieval::OkapiRetMethod中所实现的。

Performs retrieval via Okapi scoring as implemented in lemur::retrieval::OkapiRetMethod. 这种基准测试方法下不能实施伪相关反馈。

参数 (可选):

k1: k1词权重,默认值为1.2

b:b词权重,默认值为0.75

k3: k3 查询权重,默认为7

1.1.2        格式化参数

queryOffset

指定查询的序号偏移,例如针对TREC格式的150。在参数文件中如number指定,在命令行中如-queryOffset=number方式指定

runID

查询运行的id字符串,在TREC的评分输出中使用。在参数文件中,像这样someID指定,在命令行中如下-runID=someID 。

trecFormat

标识true下产生TREC的评分输出,否则标识为false。在参数文件中这样指定: true,在命令行中这样指定-trecFormat=true。注意0可以用来表示false,1可以用来表示true。

inex participant-id

触发INEX格式的结果输出,指定提交所用的参与者ID,在参数文件中的格式如下someID,命令行格式为-inex.participantID=someID。

inex task

触发INEX格式的结果输出,指定任务属性,默认(CO.Thorough),在参数文件中格式如下someTask,命令行格式-inex.task=someTask。

inex query

触发INEX格式的结果输出,指定查询属性(默认为automatic),在参数文件中格式为someQueryType,命令行格式-inex.query=someQueryType。

inex topic-part

触发INEX格式的结果输出,指定topic-part 的属性(默认T),在参数文件中格式为someTopicPart,命令行格式如下 -inex.topicPart=someTopicPart。

inex description

触发INEX格式的结果输出,指定描述内容,在参数文件中用如下形式指定some description,在命令行中用 -inex.description="some description"描述。

1.1.3        伪相关反馈参数(Pseudo-Relevance Feedback)

fbDocs

用于相关反馈的文档数,在参数文件中如下方式指定number,命令行指定方式-fbDocs=number

fbTerms

用于相关反馈的词项数,在命令行中如下方式指定number,在命令行中指定方式-fbTerms=number

fbMu

用于相关反馈的mu值,浮点数,在命令行中指定方式为number,在命令行中指定方式为:-fbMu=number

fbOrigWeight

[0.0..1.0]区间内的浮点值用于指定扩展Query中原始Query的权重,参数文件中指定方式number,命令行中的指定方式为 -fbOrigWeight=number。

1.1.4        命令实例

IndriRunQuery D:/index/queryparam.txt

其中D:/index/queryparam.txt为参数配置文件,如下:

D:\index\ohsumed2

500

case

false

krovertz

1.1.5        Java调用并保存结果

下表的功能实现用Java调用命令执行,并将结果存入文本文件之中。

public static void main(String[] args){

//original results

LemurCommandExecutor lce = new LemurCommandExecutor("IndriRunQuery", "D:/index/queryparam.txt");

lce.setOutputFile("D:/index/queryresult.txt");

lce.executeToFile();

}

public void executeToFile(){

Process p = null;

try {

String fullExecute = this.commandName +" "+ this.parameterFile;

System.out.println(fullExecute);

p = Runtime.getRuntime().exec(fullExecute);

InputStreamReader isr = new InputStreamReader(p.getInputStream());

File file = new File(this.outputFile);

BufferedWriter output = new BufferedWriter(new FileWriter(file));

int c = 0;

while ((c = isr.read()) >-1) {

output.write(c);

}

output.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

Indri查询命令及Java调用并保存结果的更多相关文章

  1. windows下Java调用mysql的客户端备份和恢复

    这种东西没啥好聊的,其实就是Java执行dos界面下的命令,不过有些要注意就是了,真实dos下面的命令和java调用的windows系统的接口其实还是有一点不同. /** * @param hostI ...

  2. Java调用Linux命令(cd的处理)

    一.Java调用Linux系统的命令非常简单 这是一个非常常用的调用方法示例: public String executeLinuxCmd(String cmd) { System.out.print ...

  3. Java调用windows命令

    JAVA调用windows的cmd命令 用起来会让程序变得更加简洁明了,非常实用. 核心就是使用 Runtime类. cmd的xcopy就有很强大的文件夹,文件处理功能. 下面就以xcopy来说明,如 ...

  4. [转载]java调用本地dos命令

    在社区看到java调用本地dos命令的代码,特贴出来 String command = "ipconfig"; Runtime run = Runtime.getRuntime() ...

  5. Java 调用并执行cmd命令

    cmd java 调用 执行 概要: Java 调用并执行cmd命令 Java | 复制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 2 ...

  6. java调用ffmpeg命令行推流遇到的问题

    1.Java调用命令行,如果没有额外环境变量,不指定工作路径,Runtime有两个方法 public Process exec(String command) public Process exec( ...

  7. java调用cmd执行maven命令

    一.原理介绍 Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后封闭命令窗口. cmd /k di ...

  8. 通过JAVA调用命令行程序

    这是我在把数据导入到数据库时遇到问题,总结下来的.包含两个方法,一个方法是读取文件路径下的文件列表,主方法是执行cmd命令,在导入时想得到导入一个文件的时间,涉及到线程阻塞问题,这个问题理解不是很深, ...

  9. java基础/java调用shell命令和脚本

    一.项目需求: 从某一机构获取证书,证书机构提供小工具,执行.sh脚本即可启动服务,本地调用该服务即可获取证书. 问题:linux服务器启动该服务,不能关闭.一旦关闭,服务即停止. 解决方案:java ...

随机推荐

  1. oracle中的sql%rowcount

    sql%rowcount用于记录修改的条数,就如你在sqlplus下执行delete from之后提示已删除xx行一样,这个参数必须要在一个修改语句和commit之间放置,否则你就得不到正确的修改行数 ...

  2. [改善Java代码]线程优先级只使用三个等级

    线程的优先级(priority)决定了线程获得CPU运行的机会,优先级越高获得的运行机会越大,优先级越低获得的机会越小.Java的线程有10个级别(准确的说是11个级别,级别为0的线程是JVM,应用程 ...

  3. [ImportNew]8张图理解Java

    http://www.importnew.com/11725.html 1.字符串的不变性. 下面这张图展示了这段代码做了什么 String s = "abcd"; s = s.c ...

  4. jQuery对象和dom对象的辨析和相互转化

    jquery对象和dom对象总是让人感觉很难分清,其实只要做到1对两者概念有明确认识2找出不同点 A DOM 1概念 DOM对象(Document Object Model,文档对象模型)可以把htm ...

  5. Ubuntu 14.0操作系统,修改默认打开方式的方法

    Ubuntu 14.0 有内置的视频播放器 Totem,但是使用起来不太习惯,所以在系统的软件中心 下载了gnome Mplayer和s Mplayer,都有打开上次播放的忆功能,只是gnome Mp ...

  6. 会话—cookie

    什么是会话?       会话可简单理解为:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 会话过程中要解决的一些问题?       每个用户在使 ...

  7. Android之进度条2

    我之前有写过一篇“Android之进度条1”,那个是条形的进度条(显示数字进度),这次实现圆形进度条. 点击查看Android之进度条1:http://www.cnblogs.com/caidupin ...

  8. 动态执行C#代码

    using System; using System.CodeDom.Compiler;using System.Collections.Generic;using System.Linq;using ...

  9. JS调用iframe方式实现Web区域打印页面内容

    1.程序说明 1) 此程序可以实现选择页面中的区域进行打印,以iframe方式进行打印: 2) 与原生态的print() 区别在于,取消打印页面后可以完整保留当前访问页面的内容. 2.代码部分 1) ...

  10. iOS开发——iOS10升级极光推送SDK、友盟分享SDK

    前不久升级了Xcode8 ,同时iOS10系统也推送久. 由于公司需要适配iOS 10系统,同时第三方sdk建议升级. 包含替换升级新的SDK和相应的代码修改. 主要分享如何升级极光推送SDK,友盟分 ...