Lucene 自定义Solr排序

Lucene 自定义Solr排序,lucene,solr,buckets,Lucene,Solr,Buckets,我被要求对Solr作为商业搜索引擎的替代方案进行评估 该应用程序现在有一种非常特殊的方法,可以使用一种称为“bucket”的东西对结果进行排序 我将尝试用一些细节来解释: 在界面中有两个字段:“what”和“where” 这两个字段实际上都是字段集(what=类别、姓名、联系人信息……where=国家、州、地区、城市……),因此Solr的copyfield功能立即浮现在脑海中。现在,根据生成的字段和实际匹配,结果应该在特定的存储桶中结束。特别是,第一个bucket包含在category字段上完全

我被要求对Solr作为商业搜索引擎的替代方案进行评估

该应用程序现在有一种非常特殊的方法,可以使用一种称为“bucket”的东西对结果进行排序

我将尝试用一些细节来解释:

在界面中有两个字段:“what”和“where”

这两个字段实际上都是字段集(what=类别、姓名、联系人信息……where=国家、州、地区、城市……),因此Solr的copyfield功能立即浮现在脑海中。现在,根据生成的字段和实际匹配,结果应该在特定的存储桶中结束。特别是,第一个bucket包含在category字段上完全匹配的所有结果文档,第二个bucket包含在name字段上完全匹配的结果文档,第三个bucket包含在category字段上完全匹配的结果文档,第四个bucket包含在name字段上部分匹配的结果文档,第五个bucket包含在contact info字段上完全匹配的结果文档,等等。。。然后,在每个第一级存储桶中,根据匹配的位置,所有结果都放在第二级存储桶中:城市、地区、省份等等。更复杂的是,还有一个第三层bucket,根据排名字段的值放置结果:排名字段中值为1的所有文档都放入bucket 1,以此类推。最后的结果应该在第三层桶中随机化

除此之外,他们显然希望支持方面和分页

很抱歉邮件太长,但我非常感谢您的反馈和/或建议

我知道这是一个非常特殊的问题,但所有能为我指明正确方向的东西都是有帮助的

干杯,
Tom

听起来应用程序正在使用这种复杂的排序算法作为相关性的代理。Solr使用计分来进行这种类型的排序,并提供许多方法来控制计分方程

例如,您可以将短语匹配的排名高于关键字匹配的排名,为某些字段赋予更高的权重,等等。您甚至可以编写自己的自定义代码并相当轻松地将其插入


使用这种方法,您可能无法复制当前应用程序的确切顺序,但这并不一定是一件坏事。

我不明白在这种结构中,facet和分页有什么意义。