我知道lucene,刚开始学习如何使用solr。在简单的例子中,添加文档的方法是使用示例../update -jar post.jar来添加文档,问题是没有在java中编写我自己的添加文档,使用相同的方式(... post。 jar),有没有办法添加不在文档中的其他字段?例如,假设我的架构包括名称,年龄,id字段,但文档没有'id'字段,但我想要包含id及其值,当然我知道我想要的id和值但是我如何包含它?
先谢谢!
答案 0 :(得分:0)
我不相信你可以混合这两者。您可以使用post.jar使用命令行传入的参数,文件,标准输入或网页上的简单爬网来添加文档,但无法将它们组合在一起。在post.jar的源代码中,您可以看到它是一系列else if
语句,因此它们是互斥的。
-Ddata args,stdin,files,web
使用args沿命令行传递参数(例如命令) 删除文件)。使用文件传递文件名或正则表达式模式 指示路径和文件名。使用stdin使用标准输入。使用 用于非常简单的Web爬虫的Web(对此的参数将是URL 爬行)。
https://cwiki.apache.org/confluence/display/solr/Simple+Post+Tool
/**
* After initialization, call execute to start the post job.
* This method delegates to the correct mode method.
*/
public void execute() {
final long startTime = System.currentTimeMillis();
if (DATA_MODE_FILES.equals(mode) && args.length > 0) {
doFilesMode();
} else if(DATA_MODE_ARGS.equals(mode) && args.length > 0) {
doArgsMode();
} else if(DATA_MODE_WEB.equals(mode) && args.length > 0) {
doWebMode();
} else if(DATA_MODE_STDIN.equals(mode)) {
doStdinMode();
} else {
usageShort();
return;
}
if (commit) commit();
if (optimize) optimize();
final long endTime = System.currentTimeMillis();
displayTiming(endTime - startTime);
}
您可以尝试修改代码,但我认为更好的选择是预先处理您的xml文件以包含缺少的字段,或者学习使用API(通过Java或使用Curl命中)来执行这是你自己的。