[英]Lucene: Overwrite Term Frequency at Index Time
我对 Lucene 的索引结构很陌生,所以请告诉我这是否有意义,或者我是否正在尝试使用锤子钻孔。
要点/概述
我相信我需要用我自己的一些数字(即表示概率(即 [0,1])的值 [0,100] 或另一个作为衡量证据的数字,可以代替词频。是否可以在索引时覆盖词频值,以便该数字实际存储在 Lucene 索引中(而不是 Lucene 使用的正常词频)?
详细:
我的文件可能不包含文本或文本很少。 相反,大多数(或被视为)带有元信息的数字工件。 该元信息是从分类器和其他机器学习方法(例如,基于对象识别、颜色直方图或证据组合)获得的学习概念概率。 这是一个非常简单的示例,其中图像被分类(很有可能)包含一棵树并描绘了一座房子。
filepath: /pics/1.jpg
meta: tree = 0.9
meta: house = 0.8
meta: dog = 0.0
... (up to 10000 meta fields)
另一个显示了一只狗,一所房子,但没有树。
filepath: /pics/2.jpg
meta: tree = 0.0
meta: house = 0.3
meta: dog = 1.0
... (up to 10000 meta fields)
每个元标记都存储在一个名为“meta”的单独文档字段中,以便通过将搜索定向到它来使所有元标记都可搜索。 每个字段都包含作为单词或短语的概念,并被视为一个标记。
因此,我主要有关于图 1 和图 2 内容的外部证据来源,我知道这主要超出了经典 TF-IDF 范式的范围。 我想将这些概率(对于“元”字段)插入到 Lucene 的评分方案中,以搜索这些元信息标记并将这些概率带入评分中,就像 TF-IDF 一样。 如果我搜索 meta:tree 和 meta:dog,我想找到第二个文档,如果评分使用这些新的概率 TF,则可以实现这一点。 因此,如果我可以修改每个元概念(树、房子和狗)的 TF 及其概率,那么我可以将其包含到 Lucene 中,而无需更改所有其他概念。
这有意义吗? Lucene 是否对索引提供了如此低级别的修改? 我是否朝着正确的方向前进?
如何子类化DefaultSimilarity并覆盖tf方法?
您是否阅读过有关 Lucene doco 中评分的信息?
这个问题被用作LUCENE-7854 的支持证据,并且在 Lucene 7.0 中添加了提供您自己的术语频率的能力。
要使用它,请在分析器中使用DelimitedTermFrequencyTokenFilter 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.