将lucene索引转化成mahout输入向量

mahout lucene.vector --dir /home/test/test-in/index/ --output /home/test/test-in/outdex/part-out.vec --field body --dictOut /home/test/test-in/outdex/dict.out 

问题1:版本问题( "Exception in thread "main" org.apache.lucene.index.CorruptIndexException: Unknown format version: -11" as an error.)
答:这个问题我查了半天,其实官网中已经明确提出这个问题了(详见参考资料1)。我用的是lucene3.1生成的索引,而mahout-0.4中所带的lucene包是3.0.2版,所以报了这个错误。把mahout换成0.5版就不报错了,0.5版中用的是lucene3.1。

问题2:hadoop为什么必须启动,才能执行转化,为什么输出结果直接到hdfs上了呢?而不是本地目录,难道是为了方便后面的聚类分析?为什么有资料说是输出到本地目录?

答:看了一下lucene.vector 源码(在mahout-utils-0.5.jar包中),mahout0.5版与之前版本在输出目录这里有不同,mahout是直接放在hdfs上,而之前版本是会判断是本地目录,如果不是,就放在hdfs上

2011-8-1修正回答:虽然mahout0.5在lucene.vector 源码中处理与之前版本不一样,但根本原因不是这里,mahout从0.4版开始,只要环境变量中设置了HADOOP_HOME,就会在HDFS上运行了,如果没设HADOOP_HOME,它会提示"no HADOOP_HOME set,running locally",此时mahout的文件格式转化命令的输入输出就是本地的目录

问题3:把nutch生成的parse_text作为kmeas输入时,也报错,不知是文件格式问题,还是数据问题?

2011-8-1答:要转成mahout的输入向量类型才行

问题4:参考资料1中说,聚类输入必须是向量形式(二进制存储),可是前面mahout入门例子中,可以直接用.data类型的文件啊

2011-8-1答:因为在入门例子中,用的是example的jar包来运行的,要运行自己的数据,就要转换数据类型,用mahout kmeans+参数来运行

如果希望索引能被mahout lucene.vector 转成向量,则需要存储termVector属性,不管是lucene还是solr中加了TermVector后,索引目录中,都会多出.tvd,.tvf,.tvx三个文件

参考资料:

1.https://cwiki.apache.org/confluence/display/MAHOUT/Creating+Vectors+from+Text

2.http://www.lucidimagination.com/blog/2010/03/16/integrating-apache-mahout-with-apache-lucene-and-solr-part-i-of-3/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值