Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I'm considering using the new "Content Enrichment web service" possibility in SP2013 in order to populate a custom managed property when crawling an item in a SPList (more details at http://msdn.microsoft.com/en-us/library/jj163982(v=office.15).aspx).

I would need, however, to update the value of the managed property in certain circumstances, for all items in a given list (also on all lists in a given SPWeb).

Is there a way to programmaticaly mark an item (or preferably an entire list or even SPWeb) so that it is re-indexed in the next incremental crawl?

share|improve this question
add comment

3 Answers 3

Under List Settings - Advanced settings there is a "Reindex" button you could use. I guess you could set this flag programmatically as well.

share|improve this answer
add comment

SharePoint 2013 to the rescue. 2013 has a new feature called "Continuous crawl", this will do what you want it to do, as it keeps the content very fresh and updated in the index.

You don't need to worry about fine tuning it for such things, it will handle it, itself.

share|improve this answer
    
So, to clarify, there is no possibility to push content to crawl. Instead MS created continuous craws. –  Anton Khritonenkov Nov 13 '12 at 22:03
    
Oh, I guess there's some misunderstanding here. I want to use the "Content enrichment" functionality, so I will have a managed metadata which is not mapped to any crawled property of a list item - it is filled out programmatically. The property is filled out at crawl time. The issue is how to update, later on, the value of such managed property. –  jhrecife Nov 14 '12 at 0:02
add comment

Yes it is possible to mark files for re-crawling here is an example method, hope it helps

public void ReCrawlDocument(string searchServiceName, string path)
    {
        try
        {
            if (!string.IsNullOrEmpty(searchServiceName) && !string.IsNullOrEmpty(path))
            {
                SearchServiceApplication app = SearchService.Service.SearchServiceApplications.FirstOrDefault(ss => ss.Name.ToLower() == searchServiceName.ToLower());
                CrawlLog cLog = new CrawlLog(app);

                cLog.RecrawlDocument(path.TrimEnd('/'));
            }
        }
        catch (Exception ex)
        {
            throw new FaultException(ex.Message);
        }
    }

the SearchServiceApplication and CrawlLog classes are found in Microsoft.Office.Server.Search.Administration namespace

Also the process executing this method needs to be 64bit and needs SharePoint admin account

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.