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

时间:2017-09-12 09:52:03

标签: lucene kentico

我使用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的值增加 它不起作用。

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

2 个答案:

答案 0 :(得分:1)

默认情况下,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))

答案 1 :(得分:0)

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

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

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

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

我不确定您的架构,但在这种情况下,您只需创建一个排序(这是您的升压列)列并按此排序列对结果进行排序? 它们将按排序列排序,然后按内部相关性排序