提升 Kentico 智能搜索结果相关范围

Boosting Kentico smart search results relevance scope

我使用 Kentico 智能搜索。
我想提高智能搜索结果的相关范围。
我阅读了这个 article,它描述了如何使用 bool 字段来做到这一点。
根据文章,我必须在 Kentico 页面中创建一个 bool 列,然后设置到智能搜索控件的 Search condition 字段,此代码:

columnname:(true)^3

如果所需页面包含此列且其值为 true,则此页面相关性将增加。
有效。

现在我想对整数列执行相同的操作。我想在此列中保留一个可以增加相关性的系数。
我知道 Kentico 使用我以前从未使用过的 Apache Lucene 搜索引擎。我找到了一些示例,并建议我必须像这样设置 Search condition 字段:

columnname:(0)^0 columnname:(1)^1 columnname:(2)^2

我希望搜索结果相关范围会根据 columnname 的值增加。
没用。

如果可能,我必须使用哪种语法来实现我的目标

Kentico 默认以特殊格式存储整数。因此,您需要在构建查询时将整数转换为这种格式。假设您在代码中构建查询,您可以使用 Kentico 的辅助方法 SearchValueConverter.IntToString(id) 来完成此操作,其中 id 引用您的整数值。此代码未经测试,但您需要类似以下内容:

string.Format(
  "columnname:({0})^0 columnname:({1})^1 columnname:({2})^2",
  SearchValueConverter.IntToString(id1),
  SearchValueConverter.IntToString(id2),
  SearchValueConverter.IntToString(id3))

如果理解正确,您想根据单列值进行提升 所以每个文档都包含提升值列(或它们的权重)

  • 如果列值 =0 -> 提升 0
  • 如果列值 =1 -> 提升 1
  • 如果列值 =2 -> 提升 2

基本上每个文档都包含它的权重(提升)值吧?尝试这样的事情(假设 columnname 是 lucene 索引中的列名和您的文档类型):

columnname:(int){%columname%}^{%columname%}

我不确定您的体系结构,但在这种情况下,您可以简单地创建一个排序(这是您的提升列)列并按此排序列对结果进行排序吗? 它们将按排序列排序,然后按

内的相关性排序