Episerver查找通配符搜索不';我们不能返回预期的结果

Episerver查找通配符搜索不';我们不能返回预期的结果,episerver,Episerver,最近我一直在试验EPiServerFind,我试图弄清楚如何使用通配符查询 我遇到了以下困难: 我的一位同事用EPiServerFind建立了一个POC,遗憾的是它只搜索整个单词。例如:如果搜索“applepie”,您将找到该页面,但搜索“apple”或“pie”将找不到该页面。 我已经研究了通配符查询来解决这个问题,但是当我使用它们时,我得到了意想不到的结果 详细信息 正如我前面指出的,每当我查询EPiServerFind时,我只得到完整的单词匹配 var basicSearch = _cli

最近我一直在试验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);
var basicSearch=\u client.Search()
.对于(q)
.infeld(x=>x.Name,x=>x.SearchTitle(),x=>x.SearchText())
.InAllField()
.ExcludeContainerPages()除外
.ExcludeContentFolders()
.ExcludeDeleted()
.GetContentResult()
.选择(CreateSearchHitViewModel)
。其中(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);
var wildcardSearch=\u client.Search()
.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()
.选择(CreateSearchHitViewModel)
。其中(x=>x!=null);
我用过这个博客:

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

我不知道这在哪里失败,我希望有人能告诉我


提前感谢您。

正如在EPiServer World上发布的,您似乎可以通过以下方式完成:

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

我想您也可以在单词前面添加通配符。

我已经将这段代码添加到我的Episerver Find查询中,尝试使用通配符进行匹配,但我仍然只收到整个单词的结果。这在新版本中仍然有效吗?我使用的是v11.1.0.3965,在EPiServer中也适用。查找v13.0.5