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

ffr*_*end 11 lucene solr associations

关联挖掘似乎为在文本语料库中检索相关术语提供了良好的结果.关于这个主题有几个着作,包括众所周知的LSA方法.挖掘关联的最直接方法是建立共生矩阵docs X terms并找到最常出现在同一文档中的术语.在我之前的项目中,我通过对TermDocs的迭代直接在Lucene中实现它(我通过调用IndexReader.termDocs(Term)得到它).但我在Solr看不出任何类似的东西.

所以,我的需求是:

  1. 检索特定字段中最相关的术语.
  2. 要检索该术语,术语最接近特定字段中的指定术语.

我会以下方式评价答案:

  1. 理想情况下,我希望找到直接涵盖指定需求的Solr组件,即直接获取相关术语的内容.
  2. 如果这是不可能的,我正在寻找获得指定字段的共生矩阵信息的方法.
  3. 如果这也不是一个选项,我想知道最简单的方法1)获得所有条款和2)获取这些术语出现的文件的ID(数字).

ffr*_*end 2

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

我将选择共现矩阵,因为它是关联挖掘的最重要部分。一般来说,Solr 提供了以某种方式构建此矩阵所需的所有函数,尽管它们不如直接使用 Lucene 访问那么高效。为了构建矩阵,我们需要:

  1. 所有术语或至少是最常见的术语,因为稀有术语本质上不会影响关联挖掘的结果。
  2. 同样,这些术语出现的文档,至少是顶级文档。

使用标准 Solr 组件可以轻松完成这两项任务。

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

获取包含相关术语的文档只需搜索该术语即可。这里的弱点是我们每个术语需要 1 个请求,并且可能有数千个术语。另一个弱点是简单搜索和分面搜索都不提供有关找到的文档中当前术语出现次数的信息。

有了这个,构建共现矩阵就很容易了。为了挖掘关联,可以使用其他软件(例如Weka)或编写自己的实现(例如Apriori 算法)