Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Indexing 如何计算;本体论;使用Lucene.NET访问文档_Indexing_Lucene.net_Information Retrieval_Similarity_Trigonometry - Fatal编程技术网

Indexing 如何计算;本体论;使用Lucene.NET访问文档

Indexing 如何计算;本体论;使用Lucene.NET访问文档,indexing,lucene.net,information-retrieval,similarity,trigonometry,Indexing,Lucene.net,Information Retrieval,Similarity,Trigonometry,想象一下,我有一个巨大的数据库,里面有来自不同论坛站点的线程和帖子(大约10.000.000条记录),包括几个用作lucene文档的子论坛 现在,我正试图根据每个帖子中使用的术语计算一个称为“本体论”的特性。事实上,这一特性只不过是将存储在数据库中的两个文档向量之间的简单余弦相似性,因此每个帖子只需计算一次 论坛本体性:我的帖子和虚拟博客之间的余弦相似性 包含指定论坛中所有其他帖子的文件(包括 论坛中的所有线程) 线程本体性:我的帖子和虚拟主题之间的余弦相似性 由指定线程中的所有其他帖子组成的

想象一下,我有一个巨大的数据库,里面有来自不同论坛站点的线程和帖子(大约10.000.000条记录),包括几个用作lucene文档的子论坛

现在,我正试图根据每个帖子中使用的术语计算一个称为“本体论”的特性。事实上,这一特性只不过是将存储在数据库中的两个文档向量之间的简单余弦相似性,因此每个帖子只需计算一次

  • 论坛本体性:我的帖子和虚拟博客之间的余弦相似性 包含指定论坛中所有其他帖子的文件(包括 论坛中的所有线程)
  • 线程本体性:我的帖子和虚拟主题之间的余弦相似性 由指定线程中的所有其他帖子组成的文档
由于Lucene.NET API不提供计算文档或文档索引余弦相似性的方法,因此我可以将其中一个文档解析为查询并搜索结果中的另一个文档,或者使用TermFreqVectors和DocFrequencies手动计算相似性

我尝试了第二次尝试,因为它听起来更快,但遇到了一个问题:IndexReader.GetTermFreqVector()方法将内部docNumber作为参数,我不知道是否只将两个文档传递给我的GetCosinessilarity方法:

public void GetCosineSimilarity(Document doc1, Document doc2)
{
    using (IndexReader reader = IndexReader.Open(FSDirectory.Open(indexDir), true))
    {
        // how do I get the docNumbers?
        TermFreqVector tfv1 = reader.GetTermFreqVector(???, "PostBody");
        TermFreqVector tfv2 = reader.GetTermFreqVector(???, "PostBody");
        ...
        // assuming that I have the TermFreqVectors, how would I continue here?
    }
}
除此之外,您将如何为整个论坛或线程创建所提到的“虚拟文档”?我是否应该将所有包含帖子的PostBody字段连接起来,并将它们解析为一个新文档,或者我可以为它们创建一个索引,并以某种方式将我的帖子与整个索引进行比较


正如你所看到的,作为一个Lucene新手,我仍然不能确定我的整体索引设计,并且肯定会使用一些一般性的建议。非常感谢您的帮助-谢谢

在中查看更像此查询


它的来源可能很有用。

请查看。这是一个免费的开源Java软件包,可以做很多你想做的事情,例如计算文档之间的余弦相似性。

谢谢你的回答。请你进一步解释一下,为了实现我的目标,我应该从源头上获取什么?据我所知,这个查询更可能根据整个索引从我的文档中提取重要术语并对其打分。不过,我仍然不知道如何构造和比较这两个文档。不幸的是,S-Space是一个Java实现,这对我来说不是一个选项,因为我是在一个只使用.NET的环境中工作的。