首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lucene.net没有将关键字与搜索字符串分离开来。

Lucene.net没有将关键字与搜索字符串分离开来。
EN

Stack Overflow用户
提问于 2016-02-22 05:54:45
回答 1查看 245关注 0票数 0

我已经实现了一个网站搜索功能在一个网站上建立在Umbraco。对于站点搜索,我们使用的是Lucene.net,它很容易与Umbraco集成。

如果我使用带有单个关键字的搜索字符串,则搜索工作非常完美。例如,有一个页面(在网站中)有一个标题名为“家用视频许可证”。现在,如果我使用搜索字符串“国内”或“视频”,它可以工作。但如果我使用“国内视频”或“国内牌照”,结果就不会被退回。

我想建立一个查询,它不仅会返回整个“国内视频”的匹配,而且还会返回包含“国内任何视频”、“国内视频”和“视频”文本的页面。在返回的所有结果中,完全匹配的页面应该有更高的分数,以便它们在搜索结果上占据突出位置。

有人有什么建议吗?我的当前代码如下:

代码语言:javascript
运行
复制
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"]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-22 09:52:34

我认为您需要使用搜索条件的GroupedOr方法来生成查询。

GroupedOr方法需要两个列表,一个是字段名,另一个是搜索关键字。例如:

代码语言:javascript
运行
复制
var query = provider.CreateSearchCriteria(BooleanOperation.And)
    .GroupedOr(siteSearchFields,
    searchTerms).Compile();

这个Gist中有一个完整的例子:https://gist.github.com/tarnacious/1399392

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35546650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档