Dela via


Hantera sökrötter

Med Crawl Scope Manager (CSM) möjliggörs det att lägga till sökrötter till Windows Search-crawlomfånget för dina datalager och ta bort dem därifrån.

Det här avsnittet innehåller följande ämnen:

 

Om sökrötter

En sökrot definierar basen för ett Shell-namnområde där specifika omfång kan inkluderas eller exkluderas, och är vanligtvis den högsta containern i ett protokoll som kan räknas upp. Den anger inte vilka delar av det här arkivet som ska eller inte ska indexeras. det signalerar bara att ett innehållslager finns och är associerat med en registrerad protokollhanterare. Syntaxen för att identifiera en sökrots-URL innehåller protokollet, arkivet eller användarens säkerhetsidentifierare, sökvägen och eventuellt ett specifikt objekt (t.ex. en fil). I följande exempel visas två former av syntaxen för en sökrot.

<protocol>://<store or SID>\<path>\[item]
or
<protocol>://<store or SID>/<path>/[item]

Protokollet <-segmentet> måste följas av två (2) framsnedstreck ('/') om det inte är file: protokollet, som kräver tre framsnedstreck (file:///). Segmentet <webbplats eller SID-> representerar antingen ett innehållslager eller en användarsäkerhetsidentifierare om sökroten är avsedd att vara specifik för användaren. Den <sökvägssegmentet> är en uppsättning behållare, som kataloger eller mappar, och kan innehålla jokertecknet '*'. Det <objektet> segment är valfritt och kan även innehålla jokertecknet *. Om du inte inkluderar ett objekt måste du avsluta sökvägssegmentet med ett snedstreck, annars förutsätter indexeraren att den sista undercontainern är ett objekt.

Anta till exempel att du har implementerat en protokollhanterare (myPH) för att hantera filer av typen *.myext för ett anpassat program. Alla dessa filer finns i mappen WorkteamA\ProjectFiles på en lokal dator. Sökroten för det kan se ut så här:

  • myPH:///C:\WorkteamA\ProjectFiles\

Anta att du planerar att inkludera alla .myext-filer men inget annat från containern i indexet. Sökroten för det kan se ut så här:

  • myPH:///C:\WorkteamA\ProjectFiles\*.myext.

Jokerteckenmönster definierar URL:er med jokertecknet *och betraktas som ett mönster snarare än en URL, men terminologin används ofta omväxlande. Till exempel skulle file:///C:\ProjectA\*\data\ matcha följande URL:er:

  • C:\ProjectA\version1\data\
  • C:\ProjectA\version2\data\

Men det mönstret skulle inte matcha den här URL:en:

  • C:\ProjectA\version1\temp\data\

Du bör skapa nya sökrötter för containrar som inte redan finns i crawlningsomfånget för indexeraren. Om sökvägen C:\ParentScope redan ingår i crawlningsomfånget behöver du inte lägga till en ny sökrot för C:\ParentScope\ChildScope om du inte vet att det underordnade omfånget tidigare har exkluderats.

Användargränssnittet för att ange Windows Search-alternativ visar sökrötter för användare så att de kan förfina omfångsreglerna för sina sökningar. Som en del av installationsprocessen för din anpassade protokollhanterare, container och/eller program kan du definiera ett standardomfång för crawlning med inkluderings- och exkluderingsregler. Dessa regler visas för slutanvändare som platser. Användare kan navigera i underkatalogerna för din fördefinierade sökrot och välja de som de vill inkludera i sökningar eller rensa de som de vill exkludera.

 

Innan du börjar

Innan du kan använda något av CSM-gränssnitten (Crawl Scope Manager) måste du utföra följande nödvändiga steg:

  1. Skapa CrawlSearchManager-objektet och hämta dess ISearchManager--gränssnitt.
  2. Anropa ISearchManager::GetCatalog för "SystemIndex" för att hämta en instans av ett ISearchCatalogManager--gränssnitt.
  3. Anropa ISearchCatalogManager::GetCrawlScopeManager för att hämta en instans av ISearchCrawlScopeManager-gränssnittet.

När du har gjort några ändringar i CSM (Crawl Scope Manager) måste du anropa ISearchCrawlScopeManager::SaveAll. Den här metoden tar inga parametrar och returnerar S_OK vid lyckat resultat.

 

Windows 7: Nytt API för crawlningsomfångshanteraren

I Windows 7 och senareutökar ISearchCrawlScopeManager2 funktionerna i ISearchCrawlScopeManager-gränssnittet. Metoden ISearchCrawlScopeManager2::GetVersion hämtar CSM-versionen (Crawl Scope Manager), som informerar klienterna om csm-tillståndet har ändrats. ISearchCrawlScopeManager2::GetVersion resulterar inte i ett korsprocessanrop. Om funktionen lyckas förblir pekaren som returneras giltig tills klienten anropar UnmapViewOfFile på pekaren och CloseHandle på det returnerade handtaget.

 

Lägga till rötter i genomsökningsomfånget

ISearchCrawlScopeManager berättar för sökmotorn om containrar att crawla och/eller titta på, och objekt under dessa containrar att inkludera eller exkludera. Om du vill lägga till en ny sökrot instansierar du ett ISearchRoot--objekt, anger rotattributen och anropar sedan ISearchCrawlScopeManager::AddRoot och skickar en pekare till ditt ISearchRoot-objekt. Sökrots-URL:en har samma formulär som sökroten som beskrevs tidigare.

I följande tabell beskrivs relevanta put-metoder för ISearchRoot; gränssnittets andra metoder för put används för närvarande inte av Windows Search. Vi rekommenderar att du inkluderar användarnas säkerhetsidentifierare (SID) i alla rötter för bättre säkerhet. Rötter per användare är säkrare eftersom frågor körs i en process per användare, vilket säkerställer att en användare inte kan se objekt som indexerats från en annan användares inkorg, till exempel.

Metod Beskrivning
put_ProvidesNotifications Ange till TRUE- om en protokollhanterare eller ett annat program meddelar sökmotorn om ändringar i URL:erna under sökroten. Meddelandet anger att URL:erna behöver indexeras om.
put_RootURL Anger rot-URL:en för den aktuella sökningen. URL:en tar formen av sökrot som beskrevs tidigare.

 

 

Indexeraren crawlar som standard inte ett omfång när du lägger till en sökrot. Du måste också lägga till en inkluderingsregel för roten. Om du vill lägga till en användarspecifik rot för ett program bör programmet lägga till lämpliga rötter för nya användare när programmet startar.

Så här lägger du till lämpliga rötter för nya användare:

  1. Hämta användarens SID.
  2. Räkna upp alla rötter för att kontrollera om det finns någon för detta SID.
  3. Lägg till en ny rot med hjälp av SID om det behövs.

 

Ta bort rötter från crawlomfånget

Du kan använda ISearchCrawlScopeManager för att ta bort en rot från crawlningsomfånget när du inte längre vill att URL:en ska indexeras. Om du tar bort en rot tas även alla omfångsregler för url:en bort. Anta till exempel att du vill avinstallera ett innehållslager och/eller dess protokollhanterare från ett system. Du kan avinstallera programmet, ta bort alla data och sedan ta bort sökroten från crawlningsomfånget, så tar hanteraren för crawlningsomfång bort roten och alla omfångsregler som är associerade med roten.

Om du vill ta bort en befintlig sökrot anropar du ISearchCrawlScopeManager::RemoveRoot med sökroten som du vill ta bort. Sökrots-URL:en har samma formulär som sökroten som beskrevs tidigare. Den här metoden returnerar S_FALSE om roten inte hittas och en felkod om det uppstod ett fel när en rot som hittades skulle tas bort.

Om du tar bort en sökrot tas även URL:en bort från användargränssnittet för Windows Search-alternativ, så användarna kanske inte kan lägga till containern eller platsen igen med hjälp av användargränssnittet. Det är också möjligt att avlägsna alla användarinställda överstyrningar av en sökrot och återgå till de ursprungliga sökrots- och omfångsreglerna. För mer information, se Hantering av omfångsregler.

Notera

Om användare tas bort via användarprofiler på Kontrollpanelen i Windows Vista tar CSM bort alla regler och rötter med deras SID och tar bort deras indexerade objekt från katalogen. I Windows XP måste du ta bort användarnas rötter och regler manuellt.

 

 

Räkna upp rötter i crawlningsomfånget

CSM räknar upp sökrötter med hjälp av ett uppräkningsgränssnitt i COM-format av standardtyp, IEnumSearchRoots. Du kan använda det här gränssnittet för att räkna upp sökrötter för ett antal syften. Du kanske till exempel vill visa hela crawlningsomfånget i ett användargränssnitt eller ta reda på om en viss rot eller en underordnad nod redan finns i crawlningsomfånget.

 

Referens

ISearchCrawlScopeManager

ISearchRoot

IEnumSearchRoots

konceptuell

Använda crawlningsomfångshanteraren

Hantering av omfattningsregler