首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强Kentico智能搜索结果相关性范围

增强Kentico智能搜索结果相关性范围
EN

Stack Overflow用户
提问于 2017-09-12 09:52:02
回答 2查看 368关注 0票数 0

我负责肯蒂科的智能搜索。

我想提升智能搜索结果的相关性范围。

我读过这个文章,它描述了如何使用bool字段来实现它。

根据本文,我必须在Kentico页面中创建一个bool列,然后设置为智能搜索控件的Search condition字段,代码如下:

代码语言:javascript
复制
columnname:(true)^3

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

它工作了。

现在,我想对整数列做同样的操作。我想在这一栏中保留一个系数,以增加相关性。

我知道Kentico使用了我以前从未使用过的Apache搜索引擎。我找到了一些例子,并建议我必须设置Search condition字段,如下所示:

代码语言:javascript
复制
columnname:(0)^0 columnname:(1)^1 columnname:(2)^2

我期望搜索结果的相关性范围将根据columnname的值而增加。

,它不起作用。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-12 10:16:21

默认情况下,Kentico以特殊格式存储整数。因此,在构建查询时,需要将整数转换为这种格式。假设您是在代码中构建查询,则可以使用Kentico的助手方法SearchValueConverter.IntToString(id) ( id引用整数值)来完成这一任务。这段代码还没有经过测试,但是您需要这样的代码:

代码语言:javascript
复制
string.Format(
  "columnname:({0})^0 columnname:({1})^1 columnname:({2})^2",
  SearchValueConverter.IntToString(id1),
  SearchValueConverter.IntToString(id2),
  SearchValueConverter.IntToString(id3))
票数 1
EN

Stack Overflow用户

发布于 2017-09-12 14:12:42

如果正确理解,则希望根据单个列的值进行boost,因此每个文档都包含boost值列(或它们的权重)。

  • 如果列值=0 ->给出boost 0
  • 如果列值=1 ->给出boost 1
  • 如果列值=2 ->给出boost 2

基本上,每个文档都包含其权重(boost)值,对吗?尝试这样的方法(假设列名是lucene索引中的列名和文档类型):

代码语言:javascript
复制
columnname:(int){%columname%}^{%columname%}

我不确定您的体系结构,但在这种情况下,您可以简单地创建一个排序(这是您的boost列)列,并通过这个排序列来排序结果?它们将按排序列排序,然后按内部相关性排序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46173251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档