2011-02-25 63 views
4

对于我的实验,我需要为我的收集文档的每个字段定义特定的相似性度量标准。Lucene:相似类...如何定义几个相似性度量?

例如,我需要测量与TF.IDF描述字段相似性和Geolocation领域与Harvesine距离..等等

我现在学习的相似性类别。我想知道是否有任何好的教程或例如约这PROCEDE更快...

感谢

回答

1

编辑: IIUC,你必须每场的相似公式,你想用它每个文档,针对所有其他文件运行。 您可以使用几个选项,全部在索引时间:

  1. 扩展DefaultSimilarity类。
  2. 扩展SimilarityDelegator类,如果你只需要修改部分方法。

在这两种方法,你可以利用payloads存储特定项信息(可能是为LAT-长的数据非常有用)。

使用其中一种方法实现相似性类后,使用Similarity.setDefault(mySimilarity)将其设置为用于索引和搜索的相似性实例。

只有索引您的文本语料库,您可以稍后搜索 - 您可能还必须扩展Searcher类以获得原始相似度。我相信这种方法对于你的用例是错误的 - Lucene被优化为获得一些类似的文档,而不是每个人都有一个分数,所以我预测运行时将会被禁止 - 希望我错了,但是我建议你阅读Mining of Massive Datasets以获得更好的方法 - 分钟哈希值和波动值。

祝你好运。

帕特里克,我将首先引用格兰特英格索尔关于修改相似性类: "Here be Dragons"。定制Lucene的相似类很难。我已经做到了。 这并不好玩。只有在绝对必须的情况下才能做到这一点

我建议你应该先读 Grant's spatial search paper, his findability paperhis 'debugging relevance' paper。这些显示了根据需要获得点击的其他方法。

+0

@Yuval F你通过我的材料并不完全是我要找的。我不需要精炼Lucene文档分数或Findability。另外,我不需要关于位置感知服务的信息(尽管这很有趣)。我需要知道的是如何将多个相似性度量集成到一个中:lucene已经具有可用于某些字段的tf-idf分数。对于其他领域,如经纬度我需要使用Harvesine距离(我已经有一个公式使用)... – aneuryzm 2011-02-27 10:12:53

+1

@帕特里克 - 你能详细说明一下吗?您是否需要相似性来以Lucene方式对文档进行排名,或者您是否需要将其用于其他目的,例如作为比较文档的功能? – 2011-02-27 10:30:36

+0

@Yuval F ok。我将使用查询作为集合的文档,以便将其与所有其他文档进行比较。所以它是比较文件。每个文档都有文本字段,地理区域和时间/日期字段。我需要平均所有领域的分数。我想用我自己的分数公式来计算地理位置和时间/日期。可以使用tf/idf代替其他字段。 – aneuryzm 2011-02-27 10:37:31