Search 站点核心索引搜索

Search 站点核心索引搜索,search,lucene,sitecore,Search,Lucene,Sitecore,我正在构建一个sitecore索引搜索,并根据键入的关键字返回结果。有没有一种方法可以让我知道哪个项目的关键字点击率最高,并且可以使用这些点击率进行排序 var index=ContentSearchManager.GetIndex(“passport_index”); 使用(var context=index.CreateSearchContext()) { var predicate=PredicateBuilder.True(); foreach(baseQuery.Split(“”)中的

我正在构建一个sitecore索引搜索,并根据键入的关键字返回结果。有没有一种方法可以让我知道哪个项目的关键字点击率最高,并且可以使用这些点击率进行排序

var index=ContentSearchManager.GetIndex(“passport_index”);
使用(var context=index.CreateSearchContext())
{
var predicate=PredicateBuilder.True();
foreach(baseQuery.Split(“”)中的var t)
{
var=t;
谓词=谓词。或(p=>p.Content.Contains(试探项));
}
}

这是默认行为,因此不需要应用排序

结果按其
分数排序。影响分数的主要因素是术语出现在文档中的次数

引述:

通常,VSM(向量空间建模)背后的理念是 查询项相对于编号在文档中出现的次数更多 术语出现在集合中所有文档中的次数 该文档与查询更相关


正如马丁所说,默认情况下,它将按分数递减顺序排列。但是,您也可以使用
GetResults
扩展方法获取分数值

在您的示例中,您可以这样做:

var index = ContentSearchManager.GetIndex("passport_index");
using (var context = index.CreateSearchContext())
{
    var predicate = PredicateBuilder.True<SearchResultItem>();
    foreach (var t in baseQuery.Split(' '))
    {
        var tempTerm = t;
        predicate = predicate.Or(p => p.Content.Contains(tempTerm));
    }
    var query = context.GetQueryable<SearchResultItem>().Where(predicate);
    var results = query.GetResults();

    // Get total results
    var total = results.TotalSearchResults;

    var hits = results.Hits.OrderByDescending(x => x.Score).Select(x => x.Document);
}
var index=ContentSearchManager.GetIndex(“passport_index”);
使用(var context=index.CreateSearchContext())
{
var predicate=PredicateBuilder.True();
foreach(baseQuery.Split(“”)中的var t)
{
var=t;
谓词=谓词。或(p=>p.Content.Contains(试探项));
}
var query=context.GetQueryable().Where(谓词);
var results=query.GetResults();
//获得全部结果
var total=结果。TotalSearchResults;
var hits=results.hits.OrderByDescending(x=>x.Score)。选择(x=>x.Document);
}
results.Hits
返回一个
IEnumerable
SearchHit
包含一个文档,该文档是结果和一个分数,该分数是一个包含文档相关性分数的浮点数