我对Lucene很新,如果我的一些术语错了,请提前原谅我。
Lucene提供不同类型的字段(关键字,文本,未存储,未编制索引),但似乎它还支持数字字段, Int 字段和 Float < / em> field。
现在,我想知道“越接近越好”功能是否存在/或者在Lucene中是否易于实现:
我希望将文档的 creation_date 作为unix时间存储到浮动字段中。 然后我希望能够将查询中给出的unix时间与文档的索引unix时间进行比较。
而不是范围查询(检查范围是否在特定边界之间)或布尔查询(检查值是否相同)我希望能够返回基于相似性的相似感unix时间之间的时间。如果时间跨度很小,那么最终得分应该高于时间跨度大的时间。优选地,这不应该是线性的,而是例如指数地发生。所以这个问题的标题是:越接近,越好。
我注意到 ElasticSearch ,它使用Lucene作为核心商品decay function scores,这是我正在寻找的行为,是否存在于Lucene?
最后,我想知道:可以将这种“类型”评分与用于查询文档正文的默认tf-idf评分进行比较,最终得分是文件之间的时间跨度和机构的文本相似性。
答案 0 :(得分:1)
我不认为你像弹性搜索一样开箱即用。您可以随时尝试将其作为模块添加。这些算法在互联网上可以使用。
您还可以将lucene中的增强和负增强系统与现有的排名系统结合使用来进行实验,以确定是否能为您提供所需的结果。我在apache SOLR上这样做,它的工作就像一个魅力:)
关于你的最后一点,tf-idf模块在solr中可用,如果还没有在lucene中,只需从solr复制它并将其作为模块添加到lucene中并将自己的模块与tf-idf模块组合以实现组合结果。