索引包含字段:
在搜索“文学学士”时,文学士(荣誉)在搜索结果中显示为第一记录。我想把“文学士”作为第一张唱片,因为这是完全匹配的,然后是文学士(荣誉)
这是我的solr查询:
((_latestversion:(True)
AND includeinsearchresults_t:(true))
AND ((name_t:("Bachelor Of arts"))^5
OR pagetitle_t:("Bachelor Of arts")
OR description_t:("Bachelor Of arts")
OR pagecontent_t:("Bachelor Of arts")
OR ((name_t:(*bachelor*))^2.5
OR (name_t:(*arts*))^2.5 OR ((pagetitle_t:(*bachelor*))^2
OR (pagetitle_t:(*arts*))^2) OR ((description_t:(*bachelor*))^1.5 OR (description_t:(*arts*))^1.5)
OR (pagecontent_t:(*bachelor*) OR pagecontent_t:(*arts*)))))
var pageTitlePredicatePhrase = PredicateBuilder.True<ContentPageSearchModel>();
var DescriptionPredicatePhrase = PredicateBuilder.True<ContentPageSearchModel>();
var pageContentPredicatePhrase = PredicateBuilder.True<ContentPageSearchModel>();
var NamePredicatePhrase = PredicateBuilder.True<ContentPageSearchModel>();
var pageTitle1Predicate = PredicateBuilder.True<ContentPageSearchModel>();
var Description1Predicate = PredicateBuilder.True<ContentPageSearchModel>();
var pageContent1Predicate = PredicateBuilder.True<ContentPageSearchModel>();
var NamePredicate1 = PredicateBuilder.True<ContentPageSearchModel>();
var predicate = PredicateBuilder.True<ContentPageSearchModel>();
//To check for the entire search phrase
NamePredicatePhrase = NamePredicatePhrase.Or(item => item.CourseName.Equals(searchPhrase).Boost(5.0f));
pageTitlePredicatePhrase = pageTitlePredicatePhrase.Or(item => item.PageTitle.Equals(searchPhrase));
DescriptionPredicatePhrase = DescriptionPredicatePhrase.Or(item => item.CourseDescription.Equals(searchPhrase));
pageContentPredicatePhrase = pageContentPredicatePhrase.Or(item => item.PageContent.Equals(searchPhrase));
//For individual value search
foreach (var word in terms)
{
Name1Predicate = Name1Predicate.Or(item => item.CourseName.Contains(word).Boost(2.5f));
pageTitle1Predicate = pageTitle1Predicate.Or(item => item.PageTitle.Contains(word).Boost(2f));
Description1Predicate = Description1Predicate.Or(item => item.CourseDescription.Contains(word).Boost(1.5f));
pageContent1Predicate = pageContent1Predicate.Or(item => item.PageContent.Contains(word).Boost(1f));
}
Name1Predicate = Name1Predicate.Or(pageTitle1Predicate).Or(Description1Predicate).Or(pag1Content1Predicate);
//Final Predicate
FinalPredicatePhrase = NamePredicatePhrase.Or(pageTitlePredicatePhrase).Or(DescriptionPredicatePhrase).Or(pageContentPredicatePhrase)
.Or(Name1Predicate);发布于 2019-10-08 04:12:02
以下是我的工作:
1.创建一个新的字符串类型的计算字段,并重新生成索引。
2.促进新增加的领域
下面的查询如下所示:
((_latestversion:(真)和includeinsearchresults_t:(真)和includeinsearchresults_t:(真)和includeinsearchresults_t:(真)) ^20或pagetitle_t:(“护理学士”)或description_t:(“护理学士”)或pagecontent_t:(“护理学士”))
谢谢你,萨维塔
https://stackoverflow.com/questions/57797422
复制相似问题