2013-02-01 4 views
1

어떻게 siteroot 외부에 색인 된 결과를 Lucene에 포함시킬 수 있습니까? 물건은 fx의 루트를 기반으로합니다. "/ sitecore/content/stuff"이지만 "/ sitecore/content/Home"에는 포함되어 있지 않습니다.Sitecore Lucene 검색 색인 생성 및 하위 폴더

"/ sitecore modules/LuceneSearch /"에서 SearchManager.cs를 살펴보면 SiteRoot는 "SiteCore.Content.Site.Startpath"로 정의되지만이 파일을 변경하면 영향이있는 것으로 보입니다

참고 : 나는 단지 "LuceneResults"를 사용하고
는 & .cs을하는 .ascx

문제가 될 일을 내가 좁아으로 ----- 질문, 업데이트 -----

.

Lucene 검색에 사용하기 위해 특정 항목 세트의 색인을 만들려고합니다. Web.config의에서 , 나는 포함하는 인덱스 지정한 :

... 
<root>/sitecore/content/Home/Subfolder</root> 
... 

을하고는 검색을 doen 때 모든 하위 항목을 받고, 완벽하게 작동합니다.

나는 다음 새 위치로 정확히 같은 항목을 복사하고, 다음과 같은 내 Web.config의를 업데이트 :

... 
<root>/sitecore/content/newSubfolder/Subfolder/Subfolder</root> 
... 

을 지금 내 검색 아무것도 발견하지!
누구든지 여기에서 문제가 될 수있는 아이디어가 있습니까?

참고 :
- 변경 될 때마다 검색 색인 db를 다시 작성했습니다.
- "Luke"에서 색인이 잘 보입니다. 여기에서 검색하면 올바른 결과가 나타납니다.

전체 색인 : 당신이 Sitecore 마켓 플레이스에서 Lucene Search 모듈을 사용하는 것처럼

<index id="faqindex" type="Sitecore.Search.Index, Sitecore.Kernel"> 
    <param desc="name">$(id)</param> 
    <param desc="folder">__faq</param> 
    <Analyzer ref="search/analyzer"/> 
    <locations hint="list:AddCrawler"> 
     <resources type="Sitecore.Search.Crawlers.DatabaseCrawler, Sitecore.Kernel"> 
      <database>master</database> 
         <root>/sitecore/content/MyContent/Snippets/FAQ</root> 
      <include hint="list:IncludeTemplate"> 
       <faqblock>{3340AAAE-B2F8-4E22-8B7B-F3EDDB48587E}</faqblock> 
      </include> 
      <tags>faqblock</tags> 
      <boost>1.0</boost> 
     </resources> 
    </locations> 
</index> 
+0

인덱스가 다시 인덱싱 된 후 올바른 항목으로 채워지면 검색 결과를 검색하는 데 사용되는 코드를 확인해야합니다. –

+0

나는 같은 생각을하지만 인덱스의 "루트"태그를 제외하고는 아무 것도 바뀌지 않았습니다. 심지어 결과가 어떻게 표시되는지에 관계없이 리턴 results.Count == 0. – KMN

+0

색인을 다시 작성하십시오. 그것은 문제를 해결하지 못할 수도 있지만 시도해 볼 가치가 있습니다. – Gabbar

답변

0

소리가 난다. 이 모듈의 코드는 검색 사이트 루트에 대한 결과와 자식 제한 : 가정 SearchManager.cs에게

public SearchManager(string indexName) 
{ 
    SearchIndexName = indexName; 
    Database database = Factory.GetDatabase("master"); 
    var item = Sitecore.Context.Site.StartPath; 
    SiteRoot = database.GetItem(item); 
} 
[...] 
public SearchResultCollection Search(string searchString) 
{ 
    //Getting index from the web.config 
    var searchIndex = Sitecore.Search.SearchManager.GetIndex(SearchIndexName); 
    using(IndexSearchContext context = searchIndex.CreateSearchContext()) 
    { 
    SearchHits hits = context.Search(searchString, new SearchContext(SiteRoot)); 

sitecore 모듈 \ 루씬 검색 \를 그 사이트에서 "웹 사이트"노드 Web.config의 섹션에 startItem = "/ home"이 있으면 "home"계층 구조 외부의 결과가 반환되지 않습니다. 이 프로젝트의 소스 코드를 다운로드하고, 다음에 SiteRoot를 채우는 선을 편집하는 경우

는 새로운 항목이 반환됩니다

SiteRoote = database.GetItem("/sitecore/content"); 

하면 빈 새 LuceneSearch.dll을 복사하는 것을 잊지 마십시오 웹 사이트 프로젝트의 디렉토리.

+0

답변을 주셔서 감사합니다. 그리고 이것은 제가 끝까지 다가 왔던 것이었지만, 당신이 몇 가지 일을 정리해주었습니다. 답변을 수락했습니다. – KMN

관련 문제