我使用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
的值增加
它不起作用。
如果可能的话,我必须使用哪种语法来实现我的目标
答案 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)
如果理解正确,您希望根据单列值进行提升 所以每个文档都包含提升值列(或其权重)
基本上每个文档都包含其权重(提升)值吗?尝试这样的事情(假设columnname是lucene索引中的列名和你的文档类型):
columnname:(int){%columname%}^{%columname%}
我不确定您的架构,但在这种情况下,您只需创建一个排序(这是您的升压列)列并按此排序列对结果进行排序? 它们将按排序列排序,然后按内部相关性排序