2014-09-24 5 views
0

나는 umbra에서 색인 색인 검사를 구성했습니다. 7, 모든 페이지가 아닌 일부 페이지의 색인을 생성합니다. 예를 들어 동일한 문서 유형의 두 페이지가 있는데, 그 중 하나는 색인이지만 검색된 색인이지만 부유 한 이미지 위에있는 텍스트 내용의 일부입니다 텍스트 편집기와 그 아래 이미지 콘텐츠도 색인이 아닌가?Umbraco 검사 검색 색인

<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 : 실수를 알아낼 수 없습니다, 여기 내 설정 검사

ExamineIndex.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"])) 

나는 여기에도 같은 문제가 있었다. 여기 내가 잘못하고있는 것이 있습니다. 지금은 "검색어"라는 "검색어"를 "검색 중"이라고합니다. 해당 쿼리 문자열이 없습니다. 반면에, 당신은 그것을 만들어야합니다.

당신이 지금 가지고있는 모든 그러므로 Request.Querystring["search"]이 값 null을 반환 "search"라는 string 아닌 QueryString입니다.

컨트롤러에서 MVC를 사용하고 있었고 논리에 따라 결국 "Model"내 변수 "search"를 검색해야한다고 말했습니다. 기본적으로 나는 대체 원래의 경우 이것이 한 것은 가서 내 "모델"에서 "검색"와! string.IsNullOrEmpty "만일"다음 내 코드를 실행라는 이름의 변수를 찾기 위해 컨트롤러를 말하고 있었다

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

와 아래에.

전체 코드를 읽지 않았으며 MVC를 사용하고 있다고 말했기 때문에 원하는대로 코드를 조정하십시오.