Search 站点核心索引搜索
我正在构建一个sitecore索引搜索,并根据键入的关键字返回结果。有没有一种方法可以让我知道哪个项目的关键字点击率最高,并且可以使用这些点击率进行排序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(“”)中的
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
包含一个文档,该文档是结果和一个分数,该分数是一个包含文档相关性分数的浮点数