最近我一直在试验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);
Run Code Online (Sandbox Code Playgroud)
我使用了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);
Run Code Online (Sandbox Code Playgroud)
我用过这个博客:http://joelabrahamsson.com/wildcard-queries-with-EPiServer-find/
可悲的是,当我使用它时,我得到意想不到的结果 我得到了一些不相关的结果,但更多的相关结果被完全忽略了.
我不知道这个失败的地方,我希望有人能告诉我.
先感谢您.
正如在EPiServer World上发布的那样,您似乎可以通过以下方式实现:
.For(searchTerm, q =>
{
q.Query = searchTerm + "*";
}).InField(x => x.Name)
Run Code Online (Sandbox Code Playgroud)
我猜你也可以在这个词之前加上通配符.
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |