Dela via


Sök efter dokumentegenskaper med sökegenskapslistor

gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Innehållet i dokumentegenskaperna kunde tidigare inte skiljas från innehållet i dokumenttexten. Den här begränsningen begränsade fulltextfrågor till allmänna sökningar i hela dokument. Nu kan du dock konfigurera ett fulltextindex för att stödja egenskapsomfångssökning på vissa egenskaper, till exempel Författare och Rubrik, för dokumenttyper som stöds i en varbinär, varbinary(max) (inklusive FILESTREAM), eller bild binär datakolumn. Den här typen av sökning kallas egenskapssökning.

Det associerade filter (IFilter) avgör om egenskapssökning är möjligt för en viss typ av dokument. För vissa dokumenttyper extraherar tillhörande IFilter vissa eller alla egenskaper som definierats för den typen av dokument, samt innehållet i dokumenttexten. Du kan konfigurera ett fulltextindex för att endast stödja egenskapssökning på egenskaper som extraheras av ett IFilter under fulltextindexering. Bland IFilters som extraherar ett antal dokumentegenskaper finns IFilters för Microsoft Office-dokumenttyper (till exempel .docx, .xlsxoch .pptx). Å andra sidan genererar XML IFilter inte egenskaper.

Så här fungerar Full-Text Search med sökegenskaper

Interna egenskaps-ID:n

Full-Text Engine tilldelar godtyckligt varje registrerad egenskap ett internt egenskaps-ID, som unikt identifierar egenskapen i den specifika söklistan och som är specifik för den sökegenskapslistan. Om en egenskap läggs till i flera sökegenskapslistor skiljer sig därför det interna egenskaps-ID:t sannolikt mellan olika listor.

När en egenskap registreras för en söklista tilldelar Full-Text Engine godtyckligt ett internt egenskaps-ID egenskapen. Det interna egenskaps-ID:t är ett heltal som unikt identifierar egenskapen i sökegenskapslistan.

Följande bild visar en logisk vy över en sökegenskapslista som anger två egenskaper, Rubrik och Nyckelord. Egenskapslistans namn för Nyckelord är "Taggar". Dessa egenskaper tillhör samma egenskapsuppsättning, vars GUID är F29F85E0-4FF9-1068-AB91-08002B27B3D9. Egenskaps heltalsidentifierare är 2 för Rubrik och 5 för Taggar (nyckelord). Full-Text Engine mappar godtyckligt varje egenskap till ett internt egenskaps-ID som är unikt för listan över sökegenskaper. Det interna egenskaps-ID:t för egenskapen Title är 1 och det interna egenskaps-ID:t för egenskapen Taggar är 2.

Mappning av sökegenskapslista till intern tabell

Det interna egenskaps-ID:t skiljer sig sannolikt från egenskapens heltalsidentifierare. Om en viss egenskap har registrerats för flera sökegenskapslistor kan ett annat internt egenskaps-ID tilldelas för varje sökegenskapslista. Det interna egenskaps-ID:t kan till exempel vara 4 i en sökegenskapslista, 1 i en annan, 3 i en annan och så vidare. Egenskapens heltalsidentifierare är däremot inbyggd hos egenskapen och förblir densamma oavsett var egenskapen används.

Indexering av registrerade egenskaper

När ett fulltextindex har associerats med en sökegenskapslista måste indexet fyllas i igen för att indexera egenskapsspecifika söktermer. Under fulltextindexering lagras innehållet i alla egenskaper i fulltextindexet tillsammans med annat innehåll. Men när du indexerar en sökterm som finns i en registrerad egenskap lagrar fulltextindexeraren även motsvarande interna egenskaps-ID med termen . Om en egenskap däremot inte är registrerad lagras den i fulltextindexet som om den vore en del av dokumenttexten och har värdet noll för det interna egenskaps-ID:t.

Följande bild visar en logisk vy över hur söktermer visas i ett fulltextindex som är associerat med sökegenskapslistan som visas i föregående bild. Ett exempeldokument, dokument 1 innehåller tre egenskaper, rubrik, författare och nyckelord samt dokumenttexten. För egenskaperna Rubrik och Nyckelord, som anges i sökegenskapslistan, associeras söktermer med motsvarande interna egenskaps-ID:n i fulltextindexet. Innehållet i egenskapen Author indexeras däremot som om det vore en del av dokumenttexten. Det innebär att registreringen av en egenskap ökar storleken på fulltextindexet något, beroende på mängden innehåll som lagras i egenskapen.

fulltextindex som använder en sökegenskapslista

Söktermer i egenskapen Rubrik – "Favorit", "Cykling" och "Spår" – är kopplade till det interna egenskaps-ID som har tilldelats Rubrik för det här indexet, 1. Söktermer i egenskapen Nyckelord – "cykling" och "berg" – är associerade med det interna egenskaps-ID som tilldelats taggar för det här indexet, 2. För söktermer i egenskapen Author-"Jane" och "Doe" och söktermer i dokumenttexten är det interna egenskaps-ID:t 0. Termen "cykling" inträffar i egenskapen Rubrik, i egenskapen Nyckelord (taggar) och i dokumenttexten. En egenskapssökning efter "cykling" i egenskapen Rubrik eller Nyckelord (taggar) returnerar det här dokumentet i resultatet. En allmän fulltextfråga för "cykling" returnerar också det här dokumentet, som om indexet inte hade konfigurerats för egenskapssökning. En egenskapssökning efter "cykling" i egenskapen Author returnerar inte det här dokumentet.

En fulltextfråga med egenskapsomfång använder de interna egenskaps-ID:n som registrerats för den nuvarande sökegenskaplistan i fulltextindexet.

Effekten av att aktivera fastighetssökning

Om du konfigurerar ett fulltextindex som stöd för sökning på en eller flera egenskaper ökar storleken på indexet något, beroende på antalet egenskaper som du anger i sökegenskapslistan och på innehållet i varje egenskap.

När vi testade vanliga corpuses av Microsoft Word-, Excel- och PowerPoint-dokument konfigurerade vi ett fulltextindex för att indexera vanliga sökegenskaper. Indexeringen av dessa egenskaper ökade storleken på fulltextindexstorleken med cirka 5 procent. Vi räknar med att den här ungefärliga storleksökningen kommer att vara typisk för de flesta dokument corpuses. Men i slutändan beror storleksökningen på mängden egenskapsdata i en viss dokument corpus i förhållande till mängden övergripande data.

Skapa en sökegenskapslista och aktivera egenskapssökning

Skapa en sökegenskapslista

Skapa en lista över sökegenskaper med Transact-SQL

Använd CREATE SEARCH PROPERTY LIST (Transact-SQL)-instruktionen och ange minst ett namn på listan.

Skapa en sökegenskapslista i Management Studio
  1. Expandera servern i Object Explorer.

  2. Expandera Databaseroch expandera sedan databasen där du vill skapa listan med sökegenskaper.

  3. Expandera Storageoch högerklicka sedan på Söklistor för egenskaper.

  4. Välj Ny sökegenskapslista.

  5. Ange egenskapslistans namn.

  6. Du kan också ange någon annan som ägare av egenskapslistan.

  7. Välj något av följande alternativ:

    • Skapa en tom sökegenskapslista

    • Skapa från en befintlig sökegenskapslista

    Mer information finns i Lista över nya sökegenskaper.

  8. Välj OK.

Lägga till egenskaper i en sökegenskapslista

Egenskapssökning kräver att du skapar en sökegenskapslista och anger en eller flera egenskaper som du vill göra sökbara. När du lägger till en egenskap i en sökegenskapslista registreras egenskapen för den specifika listan. Om du vill lägga till en egenskap i en sökegenskapslista behöver du följande värden:

  • Guid för egenskapsuppsättning

    Varje sökegenskap tillhör en enskild egenskapsuppsättning som innehåller en grupp relaterade egenskaper. Varje egenskapsuppsättning identifieras av en globalt unik identifierare (GUID).

  • Egenskaps heltalsidentifierare

    Varje sökegenskap har en identifierare som är unik i egenskapsuppsättningen. För en viss egenskap kan identifieraren vara antingen ett heltal eller en sträng, men fulltextsökning stöder endast heltalsidentifierare.

  • Egenskapsnamn

    Det här är det namn som användarna anger i fulltextsökningar för att söka på egenskapen. Ett egenskapsnamn kan innehålla interna blanksteg. Den maximala längden är 256 tecken.

    Egenskapsnamnet kan vara något av följande:

    • Egenskapens kanoniska Windows-namn, till exempel System.Author eller System.Contact.HomeAddress.

    • Ett användarvänligt namn som är enkelt för användarna att komma ihåg. Vissa egenskaper är associerade med ett välkänt användarvänligt namn, till exempel "Författare" eller "Hemadress", men du kan ange vilket namn som passar bäst för användarna.

    Anteckning

    En viss kombination av egenskapsuppsättningens GUID och egenskapsidentifierare måste vara unik i en viss sökegenskapslista. Det innebär att du inte kan lägga till samma egenskap mer än en gång med olika namn eller beskrivningar.

  • Egenskapsbeskrivning (valfritt)

    När du lägger till en sökegenskap i en sökegenskapslista kan du ange en valfri beskrivning. Du kanske till exempel vill ange information om en egenskap som inte framgår av dess namn, eller så kanske du vill beskriva egenskapens egenskapsuppsättning.

Hämta värden för en sökegenskapslista

Se Hitta egenskapsuppsättnings-GUID:er och egenskapsheltal-ID:er för sökegenskaper.

Om du vill lägga till en egenskap i en sökegenskapslista med Transact-SQL

Använd ALTER SEARCH PROPERTY LIST (Transact-SQL)-instruktionen med de värden som du fick med hjälp av någon av metoderna som beskrivs i artikeln Hitta GUID:er för egenskapsuppsättningar och heltals-ID:n för sökegenskaper.

I följande exempel visas hur dessa värden används när du lägger till en egenskap i en sökegenskapslista:

ALTER SEARCH PROPERTY LIST DocumentTablePropertyList  
   ADD 'Title'  
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 2,   
      PROPERTY_DESCRIPTION = 'System.Title - Title of the item.' );  

Om du vill lägga till en egenskap i en sökegenskapslista i Management Studio

Använd dialogrutan Egenskaper för sökegenskapslistor för att lägga till och ta bort sökegenskaper. Du hittar sökegenskapslistor i Object Explorer under noden Storage i den associerade databasen.

Associera en sökegenskapslista med ett Full-Text index

För att ett fulltextindex ska ha stöd för egenskapssökning på de egenskaper som är registrerade för en sökegenskapslista måste du associera listan med sökegenskap med indexet och fylla i indexet igen. Om du återställer fulltextindexet skapas egenskapsspecifika indexposter för söktermer i var och en av de registrerade egenskaperna.

Så länge fulltextindexet fortfarande är associerat med den här sökegenskapslistan kan fulltextfråga använda alternativet EGENSKAP i CONTAINS-predikatet för att söka efter egenskaper som är registrerade för sökegenskapslistan.

Om du ändrar sökegenskapslistan som är associerad med ett fulltextindex måste indexet återskapas så att det hamnar i ett konsekvent tillstånd. Indexet trunkeras omedelbart och är tomt tills indexeringen körs i sin helhet. Mer information om när du ändrar listan över sökegenskaper gör att indexet återskapas finns i "Anmärkningar" i ALTER FULLTEXT INDEX (Transact-SQL).

Associera en sökegenskapslista med ett fulltextindex med Transact-SQL

Använd kommandot ALTER FULLTEXT INDEX (Transact-SQL) med SET SEARCH PROPERTY LIST = <property_list_name>-satsen.

Om du vill associera en sökegenskapslista med ett fulltextindex med Management Studio

Ange ett värde för sökegenskapslista på sidan Allmänt i dialogrutan Full-Text Indexegenskaper.

Köra frågor mot sökegenskaper med CONTAINS

Den grundläggande syntaxen för CONTAINS för en specificerad egenskapsfulltextfråga är följande:

SELECT column_name FROM table_name  
  WHERE CONTAINS ( PROPERTY ( column_name, 'property_name' ), '<contains_search_condition>' )  

Följande fråga söker till exempel på en indexerad egenskap, Title, i kolumnen Document i tabellen Production.Document i AdventureWorks-databasen. Frågan returnerar endast dokument vars egenskap Title innehåller strängen Maintenance eller Repair

USE AdventureWorks2022;
GO  
SELECT Document FROM Production.Document  
  WHERE CONTAINS ( PROPERTY ( Document, 'Title' ), 'Maintenance OR Repair')  
GO  

Det här exemplet förutsätter att IFilter för dokumentet extraherar dess egenskap Title, att egenskapen Title läggs till i listan över sökegenskaper och att listan över sökegenskap är associerad med fulltextindexet.

Hantera sökegenskapslistor

Visa och ändra en sökegenskapslista

Ändra en sökegenskapslista med Transact-SQL

Använd instruktionen ALTER SEARCH PROPERTY LIST (Transact-SQL) för att lägga till eller ta bort sökegenskaper.

Visa och ändra en sökegenskapslista i Management Studio
  1. Expandera servern i Object Explorer.

  2. Expandera Databaser, och expandera sedan databasen.

  3. Expandera Storage.

  4. Utöka sökegenskapslistor för att visa dem.

  5. Högerklicka på egenskapslistan och välj Egenskaper.

  6. I dialogrutan Search Property List Editor använder du rutnätet Egenskaper för att lägga till eller ta bort sökegenskaper:

    1. Om du vill ta bort en dokumentegenskap klickar du på radrubriken till vänster om egenskapen och trycker på DEL.

    2. Om du vill lägga till en dokumentegenskap klickar du på den tomma raden längst ned i listan till höger om *och anger värdena för den nya egenskapen.

      Information om dessa värden finns i Search Property List Editor. Information om hur du hämtar dessa värden för egenskaper som definierats av Microsoft finns i Find Property Set GUIDs and Property Integer IDs for Search Properties. Information om egenskaper som definierats av en oberoende programvaruleverantör (ISV) finns i dokumentationen för leverantören.

  7. Välj OK.

Ta bort en sökegenskapslista

Du kan inte släppa en egenskapslista från en databas medan listan är associerad med ett fulltextindex.

Om du vill ta bort en sökegenskapslista med Transact-SQL

Använd DROP SEARCH PROPERTY LIST (Transact-SQL)-instruktion.

Ta bort en sökegenskapslista i Management Studio
  1. Expandera servern i Object Explorer.

  2. Expandera Databaseroch expandera sedan databasen.

  3. Expandera Storageoch expandera sedan Sök egenskapslistor noden.

  4. Högerklicka på egenskapslistan som du vill ta bort och klicka på Ta bort.

  5. Välj OK.

Se även

Hitta egenskapsuppsättningars GUID och egenskapernas heltals-ID för sökfunktioner
Konfigurera och hantera filter för sökning