我们正在使用Lucene搜索我们的一个项目。该网站正在快速增长,需要改进搜索。一个关键是混合新近度和相关性。
当前,搜索发生在某些指定字段(例如页面标题,内容等)中的用户输入的关键项,并返回得分最高的结果。
现在,用户还没有发现这些结果非常有用,因为他们在顶部看到了旧日期的文章。尽管内容是相关的,但不是最近的。
我们需要提高搜索结果,以包括已发布/更新日期。我们有一个计算的列(已发布updateddate),如何使用查询时间提升来提高搜索结果?
如果不是查询时间,我们还有其他方法可以在计算项目的分数时包括日期...
请建议
您只需使用标准Sitecore搜索API创建日期评分的形式。通过在不同的日期频段上添加几个或条件,即
and(title = searchTerm或wurter = searchTerm)和( PublishDate> dateTime.now.addays(-7) 或者 PublishDate> dateTime.now.addays(-30) 或者 PublishDate> dateTime.now.addays(-90) 或者 PublishDate> dateTime.now.addays(-180) 或者 PublishDate> dateTime.now.addays(-365))
在上面的示例中,3天大的文章将从匹配所有5个日期条件的情况下获得5倍相关性。9个月前的一篇文章只能从&Lt中得分一次;-365条件。在365天内的一篇文章将被完全排除在外,因为外部和条件要求至少必须匹配这些日期条件中的至少一个,然后将其翻转到一个或意味着我们只是在情况匹配时添加相关性,而不是在他们没有。
计算的字段通常是创建的,以便我们在索引中添加其他数据。只有当您将查询简化时,它们才能改善查询时间。如果您想更快地给出结果,则应该尝试使用SOLR或一些缓存 - 但是当我们不知道您拥有的数据集以及您的查询多么复杂时,很难选择正确的路径。