我想创建一个应用程序在其数据库中搜索相似的文档;例如。用户上传文件(文本,图像等),我想查询我的应用程序是否有类似的情况。文档相似性框架
我已经创建了用于该过程(指纹识别,特征提取,哈希,哈希比较等)的必要算法,我正在寻找一个框架,它将所有这些耦合起来。
例如,如果我要实现它在Lucene的,我会做到以下几点:
- 创建自定义“标记生成器”和“词干”(〜特征提取和指纹)
- 不是添加创建的元素到Lucene索引
- 最后使用MoreLikeThis类找到类似文件
所以,基本上Lucene的可能是一个不错的选择 - 但据我所知, Lucene并不是一个文档相似性搜索引擎,而是一个基于术语的搜索引擎。
我的问题是:是否适用于上述问题的任何应用程序/框架?
感谢, krisy
更新:它看起来像我上面描述的过程被称为基于内容的媒体(声音,图像,视频)检索。
有使用Lucene的这许多项目,请参阅:http://wiki.apache.org/lucene-java/PoweredBy(里拉,同理,等等),但还是没没有发现任何专门的框架...
看看[这个问题的答案](http://stackoverflow.com/questions/1844194/get-cosine-similarity-between-two-documents-in-lucene),我认为它解决了同一主题。 – mindas 2013-05-03 09:20:21
谢谢;它证实了我最初的想法可以在Lucene中完成! :-)但是还有其他专门为此任务设计的框架吗? – krisy 2013-05-03 09:26:41
我听说过[gensim](http://radimrehurek.com/gensim/),但这是针对Python的。不确定Java是否有类似的东西。 – mindas 2013-05-03 09:30:07