Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 升级后的Solr排序?_Sorting_Solr_Solr Boost - Fatal编程技术网

Sorting 升级后的Solr排序?

Sorting 升级后的Solr排序?,sorting,solr,solr-boost,Sorting,Solr,Solr Boost,如果其他字段已排序,是否可以将增强字段放在其前面 我有按流行ASC(其整数)排序的产品,但有一些特定的产品,我想在其他产品之前提升,无论流行的价值是什么 我是Solr的新手,我已经到了需要使用eDiscoveryMax的地步,对吗? 但我不太明白它是如何工作的,我总是先把流行的产品分类 我有以下查询参数: "sort": "popular ASC", "bq": "(product_id: 123)^100", 这在搜索中称为elevation。 在solr中,querylevactionco

如果其他字段已排序,是否可以将增强字段放在其前面

我有按流行ASC(其整数)排序的产品,但有一些特定的产品,我想在其他产品之前提升,无论流行的价值是什么

我是Solr的新手,我已经到了需要使用eDiscoveryMax的地步,对吗? 但我不太明白它是如何工作的,我总是先把流行的产品分类

我有以下查询参数:

"sort": "popular ASC",
"bq": "(product_id: 123)^100",

这在搜索中称为
elevation
。 在solr中,
querylevactioncomponent
可能是您所需要的

简要使用步骤:

  • solrconfig.xml
    中配置组件
  • 添加一个
    elevate.xml
    ,并定义顶行,通常通过指定文档ID
  • 查询时,使用param
    enableElevation
    /
    forceElevation
    /。。指定是否启用高程。是的,它可以很好地与解析器
    DisMax
    eDisMax
    配合使用
参考:


@更新 我用更好的链接更新了上面的refer链接,请检查

单据id是单据的
id
字段

更重要的是:

  • queryFieldType
    属性指定字段类型,从而决定使用的分析器,对于英文文本,您可能需要
    text\u en
    ,不要使用默认的
    字符串,因为它不会分析查询输入
  • 查询时使用请求处理程序
    /elevate
    而不是
    /select
  • 添加参数enableElevation=true&forceElevation=true,以便启用提升排序
  • 附加字段“[Highted]”指示记录是否提升,它具有布尔值, 可以在'fl'参数中添加字段, e、 g
    fl=*,[highted]
关于参数:

  • enableElevation
    ,是否启用提升,它不会覆盖排序,这意味着当指定了
    sort
    param时,提升的文档是否仍在顶部取决于
    forceElevation
    param
  • forceElevation
    ,无论是否强制提升,它都会覆盖排序,这意味着当指定了
    sort
    param时,仍会将提升的文档放在顶部,然后对其他文档进行排序

以下是我的例子: solrconfig.xml:(在
之前添加)

此文件在启动时加载一次,更改后需要重新加载核心,例如通过solr admin

查询示例:

  • *%2C%5b%5D&wt=json&indent=true&defType=edismax&qf=name&stopwords=true&lowercaseOperators=true&enableElevation=true&forceElevation=true

如果你想使用<强> EDISMAX < /强>正确的方式,你需要考虑通过相关性得分排序。

bf
(boost函数)只对分数应用上瘾因子,但不会对顺序进行任何更改,因为您没有按分数排序。如果希望
popular
因子增加文档分数,您可以使用
boost
参数来实现这一点。请遵循一个可用于获得良好结果的示例:

"sort": "score DESC",
"bq": "(product_id: 123)^100",
"boost": "popular"

默认情况下,此组件尊重请求的排序参数:如果请求要求按日期排序,它将按日期排序结果。如果forceElevation=true(默认值),结果将首先返回增强的文档,然后按日期排序

"sort": "popular ASC",
"bq": "(product_id: 123)^100",
将此转换为此:

"sort": "score desc, popular ASC",
"bq": "(product_id: 123)^100",

我真的不明白这是怎么回事。我被卡在文档id部分,在哪里可以看到文档id。每次执行查询时它都是唯一的?好的。现在它只返回我指定的提升文档,不知道如何与其他文档混合。但事实上,现在我不确定这是否是我正在寻找的,因为这些特定的文档必须是动态的——在我的系统中,它们可以被添加、删除,并且它们的顺序可以更改。此外,这些文档之后必须遵循基于流行ASC的剩余文档。我可以让脚本在里面生成elevate.xml文档,但我仍然需要在每次更改这些文档时重新加载核心文件。@KristapsJaremčuks 1)它们确实包含匹配文档,我不知道为什么您没有看到。2) 要使ids动态,您可以按程序自动编辑elevate.xml文件,然后按程序自动调用重载,这需要一些实用程序类。3) 另一个解决方案是为数据添加一个优先级字段,并大大增强该字段,以便在查询匹配时,它们始终显示在前面,在这种情况下,只显示匹配的行,但使用提升非马赫行也可以配置为显示。@KristapsJaremčuks如果您仔细阅读了文档,将elevate.xml放入/中,则文件将针对每个请求加载,而不仅仅是在启动时加载,因此不需要手动重新加载。这是一种权衡,取决于站点的流量。@Krunal不要忘记
enableElevation=true&forceElevation=true
参数,在查询时尝试添加该参数。这几乎对我有用。但是“提高”:“受欢迎”是DESC(从高到低)-如何提高ASC?这是我需要的,但反过来说,受欢迎然后得分,谢谢
"sort": "popular ASC",
"bq": "(product_id: 123)^100",
"sort": "score desc, popular ASC",
"bq": "(product_id: 123)^100",