2013-06-27 31 views
6

Tôi cố gắng để thiết lập một chỉ mục tìm kiếm rất cơ bản, chỉ mục tất cả các mục trong một thư mục cụ thể. Tôi đã không thực sự sử dụng nhiều tìm kiếm, nhưng tôi đang cố gắng sử dụng các tính năng out-of-the-box, bởi vì nó là một tìm kiếm rất đơn giản. Tôi chỉ muốn lập chỉ mục tất cả các trường. Các tài liệu sitecore thực sự không cung cấp nhiều thông tin - Tôi đã đọc một vài blog, và tất cả dường như gợi ý rằng tôi cần trình thu thập dữ liệu nâng cao (http://trac.sitecore.net/AdvancedDatabaseCrawler) - về cơ bản, cái gì đó có hiệu lực của 'nó sẽ không hoạt động mà không có trình thu thập thông tin tùy chỉnh).sử dụng Rất cơ bản tìm kiếm Sitecore

là quyền này? Tôi chỉ muốn tạo một chỉ mục đơn giản, và sau đó bắt đầu sử dụng nó. Cách đơn giản nhất để thực hiện việc này là gì, không có bất kỳ mô-đun chia sẻ nào hoặc bằng cách khác? Tôi đã đi qua các tài liệu trên sitecore, nhưng nó không phải rất rõ ràng (ít nhất là với tôi). Nó định nghĩa các phần tử khác nhau của cấu hình chỉ mục trong web.config, nhưng không thực sự giải thích những gì chúng làm và những giá trị nào có sẵn. Có lẽ Tôi không tìm kiếm ở đúng nơi ..

+0

Vui lòng xem bài đăng của tôi M.R. –

+0

@ M.R. Tôi đã bao gồm giải thích về cấu hình chỉ mục ** Lucene ** trong ** Sitecore ** và mã làm việc để nhận các mục từ các chỉ mục tùy chỉnh. –

+0

Nếu bạn có tùy chọn để chọn Sitecore 7 [tài liệu này] (http://sdn.sitecore.net/Reference/Sitecore%207/Sitecore%20Search%20and%20Indexing%20Guide.aspx) sẽ giúp ích. –

Trả lời

14

Một cách đơn giản để tạo mới Lucene chỉ mục trong Sitecore với tất cả các mục bên dưới nút cụ thể chỉ trong 3 bước sau:

1: Thêm cấu hình dưới đây để các configuration/sitecore/search/configuration/indexes trong Sitecore cấu hình:

<!-- id must be unique --> 
<index id="my-custom-index" type="Sitecore.Search.Index, Sitecore.Kernel"> 
    <!-- name - not sure if necessary but use id and forget about it --> 
    <param desc="name">$(id)</param> 
    <!-- folder - name of directory on the hard drive --> 
    <param desc="folder">__my-custom-index</param> 
    <!-- analyzer - reference to analyzer defined in Sitecore.config --> 
    <Analyzer ref="search/analyzer" /> 
    <!-- list of locations to index - each of the with unique xml tag --> 
    <locations hint="list:AddCrawler"> 
    <!-- first location (and the only one in this case) - specific folder from you question --> 
    <!-- type attribute is the crawler type - use default one in this scenario --> 
    <specificfolder type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel"> 
     <!-- indexing itmes from master database --> 
     <Database>master</Database> 
     <!-- your folder path --> 
     <Root>/sitecore/content/home/my/specific/folder</Root> 
    </specificfolder> 
    </locations> 
</index> 

2: Xây dựng lại các chỉ số mới (một lần duy nhất, tất cả những thay đổi sẽ tiếp tục được phát hiện tự động):

SearchManager.GetIndex("my-custom-index").Rebuild(); 

3: Sử dụng chỉ số mới:

// use id of from the index configuration 
using (IndexSearchContext indexSearchContext = SearchManager.GetIndex("my-custom-index").CreateSearchContext()) 
{ 
    // MatchAllDocsQuery will return everything. Use proper query from the link below 
    SearchHits hits = indexSearchContext.Search(new MatchAllDocsQuery(), int.MaxValue); 
    // Get Sitecore items from the results of the query 
    List<Item> items = hits.FetchResults(0, int.MaxValue).Select(result => result.GetObject<Item>()).Where(item => item != null).ToList(); 
} 

Đây là một mô tả pdf Sitecore Search and Indexing.

Và đây là một bài viết trên blog về Troubleshooting Sitecore Lucene search and indexing.

Đây là Lucene query syntax tutorial

Introducing Lucene.Net

+0

Có, đã đi qua tài liệu đó (như đã đề cập trong câu hỏi). Nó không rõ ràng với tôi, do đó câu hỏi. –

-2

Brian Pedersen có một bài đăng trên nó. Bạn sẽ bắt đầu với một trình thu thập thông tin đơn giản. Cần tải xuống Trình thu thập thông tin cơ sở dữ liệu nâng cao và thêm tham chiếu vào dự án của bạn sau khi xây dựng nó.

Sau đó, bạn phải tạo các tập tin cấu hình được đề cập trong Blog của Brian và bạn phải sao chép vì nó là (trừ mẫu id của n tất cả). Bạn nhận được điểm cơ bản ở đây.

Sau đó, bạn có thể tải về phần mở rộng Lucene Index Viewer cho Sitecore để xem các chỉ số hoặc bạn có thể tải về công cụ Lucene để xem các chỉ số. Xem bạn có thể điền các tài liệu (các tệp trong chỉ mục của bạn) hay không. Chúng được gọi là 'Tài liệu' trong Lucene và về mặt kỹ thuật các tài liệu này là mục nội dung có trong nút mà bạn chỉ định.

Hy vọng điều này sẽ hữu ích!

Let me google that for you.

+0

Không phải của tôi downvote, nhưng một số cái nhìn sâu sắc: Lucene chỉ số người xem không chơi tốt với sitecore 6.5+ do một phiên bản không phù hợp trong việc thực hiện bản địa của Lucene.NET trong Sitecore đã được nâng cấp. Đối với nhu cầu về trình thu thập thông tin cơ sở dữ liệu nâng cao, tốt, có thực sự không phải là một. OP yêu cầu thực hiện đơn giản, trong khi sử dụng Trình thu thập thông tin cơ sở dữ liệu nâng cao sẽ có nhiều phương pháp lập chỉ mục tìm kiếm tùy chỉnh và độc đáo hơn - người dùng trung bình không cần đến nó. – mmmeff

3

Sitecore Tìm kiếm contrib (tên mới cho trình thu thập cơ sở dữ liệu nâng cao) là lựa chọn tốt nhất, bạn chỉ cần cấu hình cấu hình của nó trong thư mục ứng dụng cấu hình để cho nó bắt đầu cơ sở dữ liệu đường, vv

Bạn có thể sau đó sử dụng API của nó để tìm kiếm trong các thư mục, theo loại mẫu, trong đó một trường nhất định có một giá trị nhất định. Đây là một ví dụ về mã.

MultiFieldSearchParam parameters = new MultiFieldSearchParam(); 

parameters.Database = "web"; 
parameters.InnerCondition = QueryOccurance.Should; 
parameters.FullTextQuery = searchTerm;   
parameters.TemplateIds = array of pipe seperated ID's 

var refinements = Filters.Select(item => new MultiFieldSearchParam.Refinement(item.Value, item.Key.ToString())).ToList(); 

parameters.Refinements = refinements; 

// Các thực tế Tìm kiếm

var returnItems = new List<Item>(); 
var runner = new QueryRunner(IndexName); 
var skinnyItems = runner.GetItems(new[] {parameters}); 
skinnyItems.ForEach(x => returnItems.Add(Database.GetItem(new ItemUri(x.ItemID)))); 
return returnItems; 

Nếu không, bạn chỉ có thể cấu hình web.config cho tìm kiếm Lucene tiêu chuẩn và sử dụng mã này để tìm kiếm. (Cơ sở dữ liệu để sử dụng "web", hãy bắt đầu mục vv)

public Item[] Search(string searchterms) 
     { 
      var children = new List<Item>(); 

      var searchIndx = SearchManager.GetIndex(IndexName); 

      using (var searchContext = searchIndx.CreateSearchContext()) 
      { 
       var ftQuery = new FullTextQuery(searchterms); 
       var hits = searchContext.Search(ftQuery); 
       var results = hits.FetchResults(0, hits.Length); 

       foreach (SearchResult result in results) 
       { 
        if (result.GetObject<Item>() != null) 
        { 
         //Regular sitecore item returned  
         var resultItem = result.GetObject<Item>(); 

         if (ParentItem == null) 
         { 
          children.Add(resultItem); 
         } 
         else if (resultItem.Publishing.IsPublishable(DateTime.Now, false) && 
           ItemUtilities.IsDecendantOfItem(ParentItem, resultItem)) 
         { 
          children.Add(resultItem); 
         } 
        } 
       } 
      } 
      return children.ToArray(); 
     } 
0

Sau đó, bạn có thể tải về phần mở rộng Lucene Index Viewer cho Sitecore để xem các chỉ số hoặc bạn có thể tải về công cụ Lucene để xem các chỉ số. Xem bạn có thể điền các tài liệu (các tệp trong chỉ mục của bạn) hay không. Chúng được gọi là 'Tài liệu' trong Lucene và về mặt kỹ thuật các tài liệu này là mục nội dung có trong nút mà bạn đã chỉ định.

Các vấn đề liên quan