sql >> Database >  >> RDS >> Sqlserver

Leer productanalyses uitvoeren met SQL Server Full-Text Search. Deel 2

Dit artikel is gewijd aan een iets complexere productanalyse met Zoeken in volledige tekst, in tegenstelling tot het eerste deel waarin we hebben gekeken naar het uitvoeren van een basisproductanalyse.

Hier gaan de lezers enkele uitgebreide voorbeelden van productanalyse implementeren vanuit een verkoopoogpunt met behulp van Full-Text-query's.

Dit artikel ontvouwt de kracht van Full-Text-query's bij gebruik met analytische functies bij het uitvoeren van een productanalyse.

Vereisten

Ik raad u aan de vereisten van dit artikel door te nemen voordat u voorbeelden van productanalyse gaat implementeren.

Deel 1. Essentiële zaken

We gaan ervan uit dat u Learn to Perform Product Analysis met SQL Server Full-Text Search hebt doorlopen. Deel 1 en de mogelijkheid hebben om een ​​basisproductanalyse uit te voeren met behulp van de voorbeelden die in het eerste deel worden genoemd.

Inzicht in T-SQL en zoeken in volledige tekst

Om comfortabel te voelen tijdens het lezen van dit artikel, raden we lezers aan om een ​​goed begrip te hebben van T-SQL-scripts en Full-Text Search.

Raadpleeg Zoeken in volledige tekst implementeren in SQL Server 2016 voor geavanceerde gebruikers om een ​​geavanceerd begrip van zoeken in volledige tekst te krijgen, op voorwaarde dat u al bekend bent met de basisprincipes ervan. Toch raden we aan om het artikel Full-Text Search implementeren in SQL Server 2016 voor beginners door te nemen als u een basiskennis wilt ontwikkelen voordat u verder gaat met geavanceerd gebruik van Full-Text Search.

Zoeken in volledige tekst geïnstalleerd

Om met succes verder te gaan met het artikel, moet u ervoor zorgen dat u Full-Text Search op uw SQL-instantie hebt geïnstalleerd.

Volg deze stappen om Full-Text Search op SQL-server te installeren:

  1. Voer SQL-installatieprogramma uit.
  2. Voer het installatiebestand uit.
  3. Toevoegen als functie.
  4. Kies je huidige server.
  5. Selecteer instantiefunctie die moet worden toegevoegd.

U kunt ook het artikel Implementeren van zoeken in volledige tekst in SQL Server 2016 voor beginners raadplegen om gedetailleerde informatie te krijgen over de hierboven genoemde stappen.

Voorbeelddatabase (CarPlus)

Volg de instructies in het eerste deel als u de voorbeelddatabase nog niet hebt ingesteld. Houd er rekening mee dat u de CarPlus . moet instellen voorbeelddatabase om de voorbeelden in dit artikel te implementeren.

Full-Text-catalogus en Full-Text-index

We verwachten ook dat u de Full-Text-catalogus en Full-Text-index definieert in de kolom FeaturesLiked.

Raadpleeg Leren om productanalyses uit te voeren met SQL Server Full-Text Search. Deel 1 om de bovenstaande stappen uit te voeren, tenzij u ze al hebt voltooid.

Analyse 1:zoeken in volledige tekst naar sensoren

Laten we zeggen dat we verschillende kant-en-klare sensoren bij de auto hadden, en nu wil het topmanagement graag de volgende dingen weten:

  1. Hadden de klanten die de auto's kochten, zin in kant-en-klare sensoren?
  2. Wat voor soort sensoren vonden ze leuk?
  3. Hoeveel sensoren van een bepaald type vonden ze leuk?
  4. Kunnen we alle verschillende sensoren vergelijken die de klanten leuk vonden?

U kunt de antwoorden op al deze vragen vinden met behulp van Full-Text Search.

Zoeken naar sensoren die de voorkeur hebben van klanten

Om te weten of de klanten een van de autosensoren leuk vonden toen ze hun bestelling plaatsten, moeten we als volgt een volledige tekstquery uitvoeren:

--View Orders where customers liked Sensors
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor')

U ziet dan de volgende resultaten:

Eén ding is zeker:de klanten waren dol op kant-en-klare sensoren toen ze hun auto kochten. Dat komt omdat zoeken in volledige tekst voor sensoren een aantal resultaten opleverde.

De zoekopdracht geeft aan dat we ten minste twee soorten sensoren hebben die de klanten leuk vonden:

  1. Aanraaksensor
  2. Achteruit parkeersensor

Het is veilig om te zeggen dat de klanten in ieder geval van de bovengenoemde typen sensoren hielden.

Zoeken naar alle parkeersensoren die de voorkeur hebben van klanten

Nu moeten we Full-Text Search gebruiken om alle soorten Parkeersensoren te vinden die onze klanten leuk vonden.

We kunnen dit achterhalen door NEAR te gebruiken met de volgende zoektermen (als volgt):

--View Orders where customers liked parking sensors
SELECT
FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor NEAR Parking')

De uitvoer is als volgt:

Als gevolg hiervan lijken er zeven van dergelijke gevallen te zijn waarin klanten Parkeersensor leuk vonden . We moeten echter dieper gaan om meer informatie te krijgen.

Andere sensoren zoeken dan parkeersensoren die de voorkeur hebben van klanten

Nu willen we graag de andere kant van het verhaal weten, namelijk om erachter te komen welke klanten de sensoren leuk vonden, behalve Parkeersensor .

Gebruik de volgende volledige tekstzoekopdracht om te zoeken naar de sensoren die de klanten leuk vonden, behalve Parkeersensor :

--View Orders where customers liked other than parking sensors
SELECT 
CarOrderId
,FeaturesLiked 
FROM dbo.CarOrder 
WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Parking')

De resultaten van de bovenstaande full-text zoekopdracht zijn als volgt:

Afgezien van Parkeersensor, de klanten waren enthousiast over Touch Sensor .

Parkeersensoren vergelijken met aanraaksensoren en met andere sensoren

Het volgende grote ding is om te zien of we Parkeersensor . kunnen vergelijken met Aanraaksensor met andere soorten sensoren die de klanten leuk vonden toen ze hun bestelling plaatsten om een ​​auto te kopen.

We moeten ook het totale aantal bestellingen dat dit seizoen is geplaatst weten om de vergelijking interessanter te maken.

Dit is echter niet voldoende. We moeten ook het percentage van de overeenkomst tussen de sensoren begrijpen.

U kunt dit als volgt achterhalen met behulp van een volledige tekstquery met behulp van variabelen en T-SQL-aggregaties:

DECLARE @TotalParkingSensorLikes INT
DECLARE @TotalTouchSensorLikes INT
DECLARE @TotalOtherSensorLikes INT
 
 
DECLARE @TotalOrders INT
 
 
SET @TotalOrders=(SELECT COUNT(*) FROM dbo.CarOrder)
SET @TotalParkingSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor NEAR Parking'))
SET @TotalTouchSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor NEAR Touch'))
SET @TotalOtherSensorLikes=(SELECT COUNT(*) FROM dbo.CarOrder WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Touch AND NOT Parking'))
 
  
-- Total parking sensors likes vs touch sensors
SELECT @TotalOrders AS TotalOrders,@TotalTouchSensorLikes AS Total_Parking_Sensor_Likes,
(@TotalTouchSensorLikes*100/@TotalOrders) AS PercentLikes,
@TotalParkingSensorLikes AS Total_Touch_Sensor_Likes,
(@TotalParkingSensorLikes*100/@TotalOrders) AS PercentLikes,
@TotalOtherSensorLikes AS Total_Other_Sensor_Likes,
(@TotalOtherSensorLikes*100/@TotalOrders) AS PercentLikes

De uitvoer kan als volgt worden bekeken:

Samenvatting van analyseresultaten

We kunnen concluderen dat de klanten de voorkeur gaven aan de auto Touch Sensor functie over de Achteruitparkeersensor functie. Het waren echter de enige sensoren die de klanten leuk vonden. En de functie die ze het leukst vonden, namelijk de aanraaksensor, gebruikt slechts 23 procent van alle functies die ze leuk vonden.

Analyse 2:Zoeken in volledige tekst voor rijassistentie en waarschuwingen

Als we er nu van uitgaan dat het autofabrikant tijdens dit seizoen een aantal rijhulpfuncties heeft geïntroduceerd, waaronder enkele waarschuwingen.

Het bedrijf wil graag het volgende weten:

  1. Welke soorten rijwaarschuwingen en assistentiefuncties vonden de klanten prettig?
  2. Hoeveel klanten hebben genoten van de combinatie van waarschuwingen en hulpfuncties?
  3. Kunnen we een op leeftijd gebaseerde analyse uitvoeren van de klanten die zowel meldingen als hulpfuncties leuk vonden?

Zoeken naar rijwaarschuwingen en assistentiefuncties die de voorkeur hebben van klanten

We kunnen zoeken naar rijwaarschuwingen en assistentiefuncties die de klanten leuk vonden met behulp van een volledige tekstquery, maar we moeten niet vergeten dat het woord 'Detect' kan ook worden gebruikt als alternatief voor “Alerts” als volgt:

--Searching driving alerts and assistance features liked by customers
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) OR FORMSOF(INFLECTIONAL,Alerts)
OR FORMSOF(INFLECTIONAL,Detect)
')

De resultaten van de bovenstaande full-text zoekopdracht zijn als volgt:

Dus met behulp van een volledige tekstzoekopdracht hebben we het antwoord gevonden op de eerste zakelijke vraag over de soorten functies en waarschuwingen die de voorkeur hebben van de klanten.

Er kon daarom worden geconcludeerd dat de klanten de volgende typen rijwaarschuwingen en assistentiefuncties prettig vonden:

  1. Langewijzigingswaarschuwing
  2. Hill Assist
  3. Collision Detection
  4. Bandenspanningswaarschuwing

Klanten zoeken die van alle rijwaarschuwingen en assistentiefuncties houden

Een iets gecompliceerdere vraag is om erachter te komen hoeveel klanten alle rijhulpfuncties en -waarschuwingen leuk vonden, en deze vraag kan als volgt worden beantwoord door middel van een volledige tekst:

--Searching order where both alerts and driving assistance features are liked by customers
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) AND (FORMSOF(INFLECTIONAL,Alerts) OR FORMSOF(INFLECTIONAL,DETECT)
)')

De uitvoer is als volgt:

Er zijn dus vier bestellingen waarbij klanten zowel rijhulpfuncties als waarschuwingen leuk vonden.

Op leeftijd gebaseerde analyse van de klanten die van rijhulp- en waarschuwingsfuncties hielden

Om meer informatie te krijgen, zullen we proberen de rijhulpfuncties en waarschuwingen te begrijpen die de klanten leuk vonden op basis van hun leeftijd.

U kunt dit ook doen door de combinatie van een volledige-tekstquery en analytische functies die in T-SQL als volgt worden geboden:

-- Age based analysis of customers liking all driving alerts and assistance features
SELECT DISTINCT(CustomerAge),TotalOrders=COUNT(*) OVER (Partition BY CustomerAge),
FIRST_VALUE(CustomerAge) OVER (Order by CustomerAge) as YoungestCustomer,
LAG(CustomerAge,1,0) OVER (ORDER BY CustomerAge) as YoungerCustomerOrSameAge,
LEAD(CustomerAge,1,0) OVER (ORDER BY CustomerAge) as OlderCustomerOrSameAge,
FeaturesLiked as Driving_Assistance_or_Alerts_Features
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,Assisting) OR FORMSOF(INFLECTIONAL,Alerts)
OR FORMSOF(INFLECTIONAL,Detect)')
ORDER BY TotalOrders DESC

De uitvoer is als volgt:

Raadpleeg het artikel De kunst van het aggregeren van gegevens in SQL van eenvoudige tot glijdende aggregaties voor meer informatie over het gebruik van analytische functies in T-SQL.

Samenvatting van analyseresultaten

In het licht van de bovenstaande analyse met behulp van Full-Text Search, is het duidelijk dat de rijassistentie- en rijwaarschuwingsfuncties die de klanten leuk vonden, meestal tot de leeftijdsgroep van 35 jaar behoorden.

Dus de klanten van 35 jaar vonden deze functies het leukst, terwijl de jongste klant die deze functies leuk vond 18 jaar oud is.

De oudste klant die deze functies leuk vond, is 52 jaar oud.

Uit de bovenstaande analyse kan worden afgeleid dat de meeste klanten tussen 18 en 52 jaar genoten van de rijassistentie- en rijwaarschuwingsfuncties, terwijl de klanten die deze functies leuker vonden dan anderen 35 jaar oud zijn.

Gefeliciteerd, u heeft met succes geleerd hoe u een enigszins complexe productanalyse kunt uitvoeren met behulp van Full-Text Search.

Dingen om te doen

Nu u de productanalyse kunt uitvoeren met Zoeken in volledige tekst, raad ik u aan het volgende te proberen:

  1. Probeer gecorreleerde informatie te krijgen door de klanten te vinden die zowel sensoren als de rijhulpfuncties leuk vonden, maar niet de waarschuwingen toen ze de auto('s) kochten.
  2. Houd dit artikel in gedachten en zoek naar de klanten die de waarschuwingen leuk vonden, maar niet de rijhulpfuncties.
  3. Probeer een op leeftijd gebaseerde analyse van klanten uit te voeren voor de sensoren, vergelijkbaar met de analyse die we hebben uitgevoerd voor rijhulp- en waarschuwingsfuncties.

  1. Mysql-volgorde op specifieke ID-waarden

  2. Hoe INTERSECT werkt in SQL Server

  3. Hoe wachtwoord versleutelen in Oracle?

  4. Maak verbinding met SQL Server met Windows-verificatie vanaf een Linux-machine via JDBC