Episerver Find Wildcard 搜索没有 return 预期结果
Episerver Find Wildcard search doesn't return expected results
最近我一直在试验 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/
遗憾的是,我在使用它时得到了意想不到的结果。
我得到了一些不相关的结果,但更多相关结果被完全忽略了。
我不知道这是哪里失败了,希望有人能告诉我。
提前致谢。
正如 EPiServer World 上发布的那样,您似乎可以通过以下方式完成:
.For(searchTerm, q =>
{
q.Query = searchTerm + "*";
}).InField(x => x.Name)
而且我想你也可以在单词前添加通配符。
最近我一直在试验 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/
遗憾的是,我在使用它时得到了意想不到的结果。 我得到了一些不相关的结果,但更多相关结果被完全忽略了。
我不知道这是哪里失败了,希望有人能告诉我。
提前致谢。
正如 EPiServer World 上发布的那样,您似乎可以通过以下方式完成:
.For(searchTerm, q =>
{
q.Query = searchTerm + "*";
}).InField(x => x.Name)
而且我想你也可以在单词前添加通配符。