我负责肯蒂科的智能搜索。
我想提升智能搜索结果的相关性范围。
我读过这个文章,它描述了如何使用bool字段来实现它。
根据本文,我必须在Kentico页面中创建一个bool列,然后设置为智能搜索控件的Search condition字段,代码如下:
columnname:(true)^3如果所需的页面包含此列,且其值为true,则此页面相关性将增加。
它工作了。
现在,我想对整数列做同样的操作。我想在这一栏中保留一个系数,以增加相关性。
我知道Kentico使用了我以前从未使用过的Apache搜索引擎。我找到了一些例子,并建议我必须设置Search condition字段,如下所示:
columnname:(0)^0 columnname:(1)^1 columnname:(2)^2我期望搜索结果的相关性范围将根据columnname的值而增加。
,它不起作用。
如果可能的话,我必须使用哪种语法来达到我的目标
发布于 2017-09-12 10:16:21
默认情况下,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))发布于 2017-09-12 14:12:42
如果正确理解,则希望根据单个列的值进行boost,因此每个文档都包含boost值列(或它们的权重)。
基本上,每个文档都包含其权重(boost)值,对吗?尝试这样的方法(假设列名是lucene索引中的列名和文档类型):
columnname:(int){%columname%}^{%columname%}我不确定您的体系结构,但在这种情况下,您可以简单地创建一个排序(这是您的boost列)列,并通过这个排序列来排序结果?它们将按排序列排序,然后按内部相关性排序。
https://stackoverflow.com/questions/46173251
复制相似问题