`
jayghost
  • 浏览: 430161 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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

 
阅读更多

转自:http://blog.csdn.net/aidayei/article/details/6632819

 

 

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三个文件

In Solr, storing Term Vectors is as simple as setting termVectors=”true” on on the field in the schema, as in:

<field name=”text” type=”text” indexed=”true” stored=”true” termVectors=”true”/>

For pure Lucene, you will need to set the TermVector option on during Field creation, as in:

Field fld = new Field(“text”, “foo”, Field.Store.NO, Field.Index.ANALYZED, Field.TermVector.YES);

参考资料:

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/

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics