Episerver查找通配符搜索不会返回预期结果

时间:2015-04-30 12:15:49

标签: episerver

最近我一直在试验EPiServerFind,我正在试图弄清楚如何使用通配符查询。

我遇到以下困难:

我的一位同事已经使用EPiServerFind建立了一个POC,遗憾的是这只搜索整个单词。例如:如果您搜索“applepie”,您将找到该页面,但搜索“apple”或“pie”将找不到该页面。 我已经研究了通配符查询来解决这个问题,但是当我使用它时会得到意想不到的结果。

详情 就像我之前指出的那样,每当我查询EPiServerFind时,我只得到全字匹配。

var basicSearch = _client.Search<IContent>()
    .For(q)
        .InFields(x => x.Name, x => x.SearchTitle(), x => x.SearchText())
        .InAllField()
    .ExcludeContainerPages()
    .ExcludeContentFolders()
    .ExcludeDeleted()
    .GetContentResult()
    .Select(CreateSearchHitViewModel)
    .Where(x => x != null);

我使用Joel Abrahamsson的一篇文章来帮助我实现通配符查询:

var wildcardSearch = _client.Search<IContent>()
    .WildCardQuery(String.Format("*{0}*", q), x => x.Name)
    .WildCardQuery(String.Format("*{0}*", q), x => x.SearchTitle())
    .WildCardQuery(String.Format("*{0}*", q), x => x.SearchText())
    .ExcludeContainerPages()
    .ExcludeContentFolders()
    .ExcludeDeleted()
    .GetContentResult()
    .Select(CreateSearchHitViewModel)
    .Where(x => x != null);

我使用过这个博客:http://joelabrahamsson.com/wildcard-queries-with-EPiServer-find/

可悲的是,当我使用它时,我得到意想不到的结果。 我得到了一些不相关的结果,但更多的相关结果被完全忽略了。

我不清楚失败的地方,我希望有人可以告诉我。

提前谢谢。

1 个答案:

答案 0 :(得分:7)

正如在EPiServer World上发布的那样,您似乎可以通过以下方式实现:

.For(searchTerm, q =>
{
q.Query = searchTerm + "*";
}).InField(x => x.Name)

我猜你也可以在这个词之前添加通配符。