【发布时间】:2016-02-22 05:54:45
【问题描述】:
我在基于 Umbraco CMS 的网站上实现了网站搜索功能。对于站点搜索,我们使用的是 Lucene.net,它很容易与 Umbraco 集成。
如果我使用带有单个关键字的搜索字符串,则搜索效果很好。例如,有一个页面(在网站中)有一个名为“国内使用视频许可证”的标题。现在,如果我使用搜索字符串“国内”或“视频”,它就可以工作。但是如果我使用“国内视频”或“国内许可证”,则不会返回任何结果。
我想构建一个查询,该查询不仅会返回整个“国内视频”的匹配项,还会返回包含文本“国内任何视频”、“国内”和“视频”的页面。在所有返回的结果中,完全匹配的页面应该有更高的分数,以便它们在搜索结果中占据显着位置。
有人有什么建议吗?我当前的代码如下:
var criteria = ExamineManager.Instance
.SearchProviderCollection["WebSearcher"]
.CreateSearchCriteria(IndexTypes.Content);
var filter =
criteria.GroupedOr(
new[]
{
"nodeName", "heading", "content", "metaKeywords", "title", "umbracoNaviHide", "umbracoUrlName",
"umbracoUrlAlias", "metaCategory", "metaDescription", "metaTags", "heading", "subHeading",
"quote", "author", "socialCopy", "socialTitle", "socialTitle2", "thumbTitle", "thumbTitle2",
"thumbCopy", "thumbQuote", "url", "location", "question", "answer"
}, query)
.Compile();
var searchResults =
ExamineManager.Instance.SearchProviderCollection["WebSearcher"].Search(filter)
.OrderByDescending(x => x.Score).ThenByDescending(d => d.Fields["createDate"]);
【问题讨论】:
标签: c# umbraco search-engine lucene.net