2015-04-30 121 views
1

最近我一直在試驗EPiServerFind,我試圖弄清楚如何使用通配符查詢。Episerver查找通配符搜索不會返回預期結果

我遇到以下困難:

我的一個同事已與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); 

我用喬爾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/

可悲的是我得到意想不到的結果,當我使用這個。 我得到了一些無關的結果,但更多的相關結果被完全忽略。

我不知道這是否失敗,我希望有人能告訴我。

預先感謝您。

回答

5

上EPiServer世界貼吧好像你可以做到這一點:

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

我想你可以在字前加通配符也是如此。

+0

這很好,謝謝。 –

+0

我已將此代碼添加到我的Episerver查找查詢以嘗試使用通配符進行匹配,但我仍然只收到整個單詞結果。如果這仍然適用於更新的版本?我正在使用v11.1.0.3965 – ScoobyDrew18