Lucene 在Solr中实现术语关联挖掘的最简单方法是什么?

Lucene 在Solr中实现术语关联挖掘的最简单方法是什么?,lucene,solr,associations,Lucene,Solr,Associations,关联挖掘在文本语料库中检索相关术语时似乎取得了很好的效果。在这个主题上有几项工作,包括著名的方法。挖掘关联最直接的方法是建立docs X terms的共现矩阵,并查找最常出现在相同文档中的术语。在我以前的项目中,我通过TermDocs上的迭代直接在Lucene中实现了它(我通过调用来实现)。但我在索尔看不到任何类似的东西 因此,我的需要是: 检索特定字段中最相关的术语 检索特定字段中最接近指定项的项 我将按照以下方式对答案进行评分: 理想情况下,我希望找到Solr的组件,它可以直接满足特定的需求

关联挖掘在文本语料库中检索相关术语时似乎取得了很好的效果。在这个主题上有几项工作,包括著名的方法。挖掘关联最直接的方法是建立
docs X terms
的共现矩阵,并查找最常出现在相同文档中的术语。在我以前的项目中,我通过TermDocs上的迭代直接在Lucene中实现了它(我通过调用来实现)。但我在索尔看不到任何类似的东西

因此,我的需要是:

  • 检索特定字段中最相关的术语
  • 检索特定字段中最接近指定项的 我将按照以下方式对答案进行评分:

  • 理想情况下,我希望找到Solr的组件,它可以直接满足特定的需求,也就是说,可以直接获得相关的术语
  • 如果这是不可能的,我正在寻找获得指定字段的共现矩阵信息的方法
  • 如果这不是一个选项,我想知道最简单的方法1)获取所有术语,2)获取这些术语出现的文档的ID(编号) 您可以将Lucene(或Solr)索引导出到,然后使用潜在的Dirichlet分配。如果LDA与LSA之间的距离不足以满足您的需要,您可以从Mahout获取相关矩阵,然后使用Mahout进行奇异值分解


    我不知道Solr的任何LSA组件。

    因为我的问题仍然没有答案,我必须写下我自己的想法并接受它。尽管如此,如果有人提出更好的解决方案,我会欣然接受,而不是我的

    我将使用共生矩阵,因为它是关联挖掘最主要的部分。总的来说,Solr以某种方式提供了构建该矩阵所需的所有功能,尽管它们不如Lucene的直接访问效率高。要构建矩阵,我们需要:

  • 所有术语或至少是最常见的术语,因为稀有术语的性质不会影响关联挖掘的结果
  • 出现这些术语的文档,至少是顶级文档 使用标准Solr组件可以轻松完成这两项任务

    检索术语或可能使用的术语。我们只能获取顶级术语(默认情况下)或所有术语(通过设置要获取的术语的最大数量,请参阅特定功能的文档了解详细信息)

    获取带有该术语的文档只需搜索该术语。这里的弱点是,我们每个学期需要一个请求,而且可能有数千个学期。另一个弱点是,无论是简单搜索还是分面搜索都不能提供有关当前术语在已查找文档中出现次数的信息


    有了这一点,就很容易建立共生矩阵。要挖掘关联,可以使用其他软件,例如,或编写自己的实现

    您可以在以下查询中获得找到的文档中当前术语的出现次数:

    http://ip:port/solr/someinstance/select?defType=func&fl=termfreq(field,xxx),*&fq={!frange l=1}termfreq(field,xxx)&indent=on&q=termfreq(field,xxx)&sort=termfreq(field,xxx) desc&wt=json
    

    我用谷歌搜索了这个话题,我自己也在等待答案。顺便说一句,Solr的集群功能被描述为“将语义相关的结果/文档组合在一起的一种方式”。距离不够近,对吧?集群有点不同。首先,它适用于文档,而不是术语,所以您不能对术语进行集群(至少我看不出术语集群的任何意义,也不知道使用Solr进行集群的简单方法)。尽管看起来可能会出现相反的情况:您可以使用术语关联挖掘对文档执行聚类。谢谢您的回答,但实际上我不需要LSA-我提到它是为了证明这个主题非常流行,奇怪的是Solr仍然不支持此类任务。正如我提到的,我已经有了直接与Lucene检索关联的代码,所以我对如何使用Solr进行检索感兴趣。@ffriend:我不知道你在问什么。Solr与Lucene具有相同的索引格式,因此任何适用于Lucene的代码都适用于Solr。当然,我知道Solr在内部使用Lucene,我可以编写单独的工具从Lucene访问相同的索引,并获得我想要的。但这是不方便的:我将有两个独立的程序-Solr和我的工具,以不同的方式安装它们,以不同的方式调用它们,等等。我想要的是一个Solr命令或类似的东西来查找相关的术语。当然,我可以创建自定义RequestHandler并获得我所需要的(实际上,如果没有更好的选择,我将这样做),但首先我想知道是否已经有了用于此任务的内容。@ffriend:啊,我明白了。我的猜测是,编写自己的RequestHandler将是最简单的,但可能其他人知道的比我多。Solr的最新版本是否允许实现其他选项?