2014-09-24 149 views
0

我已經配置在一把umbraco 7審查索引,它的索引一些網頁,但不是全部,比如我有相同的文檔類型的兩個頁面其中之一是指數在搜索,但文字內容部分上面豐富的圖像文本編輯器和下面的圖像內容也不索引? 無法找出錯誤,這是我的檢查配置一把umbraco檢查搜索索引

ExamineIndex.config:

<ExamineLuceneIndexSets> 
    <!-- The internal index set used by Umbraco back-office - DO NOT REMOVE --> 
    <IndexSet SetName="InternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/Internal/"/> 

    <!-- The internal index set used by Umbraco back-office for indexing members - DO NOT REMOVE --> 
    <IndexSet SetName="InternalMemberIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/InternalMember/"> 
    <IndexAttributeFields> 
     <add Name="id" /> 
     <add Name="nodeName"/> 
     <add Name="updateDate" /> 
     <add Name="writerName" /> 
     <add Name="loginName" /> 
     <add Name="email" /> 
     <add Name="nodeTypeAlias" /> 
    </IndexAttributeFields> 
    </IndexSet> 

    <!-- Default Indexset for external searches, this indexes all fields on all types of nodes--> 
    <IndexSet SetName="ExternalIndexSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/External/" /> 


    <IndexSet SetName="MySearch" IndexPath="~/App_Data/ExamineIndexes/MySearch/"> 
    <IndexAttributeFields> 
     <add Name="id" /> 
     <add Name="nodeName"/> 
     <add Name="updateDate" /> 
     <add Name="writerName" /> 
     <add Name="nodeTypeAlias" /> 
    </IndexAttributeFields> 
    <IndexUserFields> 

     <add Name="pageBodyText"/> 
     <add Name="bodyText"/> 
     <add Name="title"/> 
     <add Name="summary"/> 
     <add Name="projectTitle"/> 
     <add Name="projectDescription"/>  
     <add Name="rightBoxContent"/> 
     <add Name="leftBoxContent"/> 

     <!--<add Name="siteName"/>--> 
    </IndexUserFields> 
    <IncludeNodeTypes> 
     <!--<add Name="umbHomePage" />--> 
     <add Name="umbHomePage" /> 
     <add Name="Page" /> 
     <add Name="NewsItem" /> 
     <add Name="Project" /> 
     <add Name="Service" /> 
     <add Name="Client" /> 


     <!--<add Name="PageWithPlugin" />--> 
    <!--NewsItem,Project,Service,Page,umbHomePage,Client--> 
    </IncludeNodeTypes> 
    </IndexSet> 

    <!--<IndexSet SetName="MySearchIndexer" IndexPath="~/App_Data/TEMP/ExamineIndexes/MySearchIndexer/" />--> 

</ExamineLuceneIndexSets> 

ExamineSettings.config:

<Examine> 
    <ExamineIndexProviders> 
    <providers> 
     <add name="InternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine" 
      supportUnpublished="true" 
      supportProtected="true" 
      analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"/> 

     <add name="InternalMemberIndexer" type="UmbracoExamine.UmbracoMemberIndexer, UmbracoExamine" 
      supportUnpublished="true" 
      supportProtected="true" 
      analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"/> 

     <!-- default external indexer, which excludes protected and unpublished pages--> 
     <add name="ExternalIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"/> 

     <add name="MySearchIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine" 
     supportUnpublished="false" 
     supportProtected="true" 
     interval="10" 
     analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" 
     indexSet="MySearch"/> 


     <!--<add name="MySearchSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" 
     analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" indexSet="MySearch" enableLeadingWildcards="true"/>--> 



    </providers> 
    </ExamineIndexProviders> 

    <ExamineSearchProviders defaultProvider="ExternalSearcher"> 
    <providers> 
     <add name="InternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" 
      analyzer="Lucene.Net.Analysis.WhitespaceAnalyzer, Lucene.Net"/> 

     <add name="ExternalSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" /> 

     <add name="InternalMemberSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" 
      analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" enableLeadingWildcard="true"/> 

     <add name="MySearchSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine" 
     analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" indexSet="MySearch" enableLeadingWildcards="true" /> 

    </providers> 
    </ExamineSearchProviders> 

</Examine> 

宏代碼:

@inherits Umbraco.Web.Macros.PartialViewMacroPage 
@using Examine.LuceneEngine.SearchCriteria 

@{ 
    if (!string.IsNullOrEmpty(Request.QueryString["search"])) 
    { 
     var q = Request.QueryString["search"]; 
     var Searcher = Examine.ExamineManager.Instance.SearchProviderCollection["MySearchSearcher"]; 

     var searchResults = Searcher.Search(q, true).OrderByDescending(x => x.Score).TakeWhile(x => x.Score > 0.05f); 
     bool isRecordFound = false; 
    <ul> 
     @foreach (var item in searchResults) 
     { 
      IPublishedContent node = Umbraco.Content(item.Fields["id"]);   
      <li> 
       <a href="@node.Url"> 
        @node.Name 
       </a> 
      </li> 
      isRecordFound = true; 

     } 
    </ul>  

     if (!isRecordFound) 
     { 
    <div> 
     <h1>No Record Found</h1> 
    </div> 
     } 

    } 
} 

回答

0
if (!string.IsNullOrEmpty(Request.QueryString["search"])) 

我在這裏遇到了同樣的問題。所以這就是我做錯了什麼。現在,你的「請求」一「查詢字符串」命名爲「搜索」。您沒有該查詢字符串。另一方面,你需要創建它。

你現在已經是一個string命名"search",不是QueryString因此Request.Querystring["search"]返回值null

我在控制器中使用MVC時,我的邏輯最終告訴我,我應該做的是搜索我的模型爲我的變量命名爲「搜索」。基本上我取代了原來如果與

if (!string.IsNullOrEmpty(model.search)) 
{ 
Your code here 
} 

什麼這並告訴控制器去,找到名爲「搜索」在我的「模型」和「如果」!string.IsNullOrEmpty,然後執行我的代碼變量下。

我沒有看過你的整個代碼和我說,我是用MVC做時,你要這麼調整自己的代碼。