Тази статия е посветена на малко по-сложен продуктов анализ с пълнотекстово търсене, за разлика от първата част, където разгледахме как да извършим основен продуктов анализ.
Тук читателите ще приложат някои изчерпателни примери за анализ на продукти от гледна точка на продажбите с помощта на пълнотекстови заявки.
Тази статия разкрива силата на пълнотекстовите заявки, когато се използват с аналитични функции при извършване на анализ на продукта.
Предварителни условия
Предлагам ви да преминете през предпоставките на тази статия, преди да започнете да прилагате примери за анализ на продукти.
Част 1. Основни неща
Предполагаме, че сте преминали през Научете се да извършвате анализ на продукти с помощта на пълнотекстово търсене на SQL Server. Част 1 и имат способността да извършват основен продуктов анализ с помощта на примерите, споменати в първата част.
Разбиране на T-SQL и пълнотекстово търсене
За да се чувствате комфортно, докато четете тази статия, препоръчваме на читателите да разбират добре T-SQL скриптовете и пълнотекстово търсене.
Вижте Внедряване на пълнотекстово търсене в SQL Server 2016 за напреднали потребители, за да получите разбиране на напреднало ниво за пълнотекстово търсене, при условие че вече сте запознати с неговите основи. Все пак ви съветваме да преминете през статията Внедряване на пълнотекстово търсене в SQL Server 2016 за начинаещи, ако трябва да развиете основно разбиране, преди да продължите с разширено използване на пълнотекстово търсене.
Инсталирано е пълнотекстово търсене
За да продължите успешно със статията, уверете се, че сте инсталирали пълнотекстово търсене на вашия SQL екземпляр.
Следвайте тези стъпки, за да инсталирате пълнотекстово търсене на SQL сървър:
- Изпълнете SQL Installer.
- Изпълнете инсталационния файл.
- Добавяне като функция.
- Изберете текущия си сървър.
- Изберете функция на екземпляра, която да бъде добавена.
Можете също да се обърнете към статията Внедряване на пълнотекстово търсене в SQL Server 2016 за начинаещи за да получите подробна информация за стъпките, споменати по-горе.
Примерна база данни (CarPlus)
Трябва да следвате инструкциите в първата част, ако все още не сте настроили примерната база данни. Имайте предвид, че ще трябва да настроите CarPlus примерна база данни за прилагане на примерите в тази статия.
Пълен текст каталог и пълнотекстов индекс
Очакваме също така да дефинирате Пълнотекстовия каталог и Пълнотекстовия индекс в колоната FeaturesLiked.
Моля, вижте Научете се да извършвате анализ на продукти с помощта на пълнотекстово търсене на SQL Server. Част 1 за да изпълните стъпките по-горе, освен ако вече не сте ги изпълнили.
Анализ 1:Пълнотекстово търсене на сензори
Да кажем, че имахме няколко готови сензора, предоставени с колата, и сега висшето ръководство иска да знае следните неща:
- Клиентите, закупили автомобилите, харесаха ли някакви предварително изготвени сензори?
- Какъв вид сензори харесаха?
- Колко сензора от определен тип харесаха?
- Можем ли да сравним всички различни сензори, които клиентите харесаха?
Можете да намерите отговорите на всички тези въпроси с помощта на пълнотекстово търсене.
Търсене на сензори, предпочитани от клиентите
За да разберем дали клиентите са харесали някой от сензорите за кола, когато са направили своите поръчки, трябва да изпълним заявка за пълен текст, както следва:
--View Orders where customers liked Sensors
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor')
След това ще видите следните резултати:
Едно е сигурно:клиентите харесаха изготвените сензори, когато купиха автомобилите си. Това е така, защото пълнотекстово търсене на сензори върна редица резултати.
Търсенето информира, че имаме поне два типа сензори, които клиентите са харесали:
- Сензор за докосване
- Сензор за паркиране на заден ход
Спокойно може да се каже, че клиентите харесаха поне гореспоменатите видове сензори.
Търсене на всички сензори за паркиране, предпочитани от клиентите
Сега трябва да използваме пълнотекстово търсене, за да намерим всички видове Сензори за паркиране които нашите клиенти харесаха.
Можем да разберем това, като използваме NEAR със следните думи за търсене (както по-долу):
--View Orders where customers liked parking sensors
SELECT
FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked, 'Sensor NEAR Parking')
Резултатът е както следва:
В резултат на това изглежда има седем от подобни случаи, в които клиентите са харесали Паркинг сензор . Трябва обаче да отидем по-дълбоко, за да получим повече информация.
Търсене на сензори, различни от сензори за паркиране, предпочитани от клиентите
Сега бихме искали да разберем другата страна на историята, тоест да разберем кои клиенти са харесали сензорите, различни от Сензор за паркиране .
Използвайте следната заявка за пълен текст, за да потърсите сензорите, които клиентите са харесали, различни от Сензор за паркиране :
--View Orders where customers liked other than parking sensors
SELECT
CarOrderId
,FeaturesLiked
FROM dbo.CarOrder
WHERE CONTAINS(FeaturesLiked,'Sensor AND NOT Parking')
Резултатите от горната заявка за пълен текст са както следва:
Освен Сензор за паркиране, клиентите харесаха Touch Sensor .
Сравняване на сензори за паркиране със сензори за докосване и с други сензори
Следващото голямо нещо е да видим дали можем да сравним Сензор за паркиране ссензор за докосване с други видове сензори, които клиентите са харесали, когато са направили своите поръчки за покупка на автомобил.
Трябва също да знаем общия брой поръчки, направени този сезон, за да направим сравнението по-интересно.
Това обаче не е достатъчно. Трябва също да разберем процента на приликата между сензорите.
Можете да разберете това, като използвате заявка за пълен текст с помощта на променливи и T-SQL агрегати, както следва:
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
Резултатът може да се види по следния начин:
Резюме на резултатите от анализа
Можем да заключим, че клиентите са предпочели автомобилния Touch Sensor функция над Сензора за задно паркиране отличителен белег. Те обаче бяха единствените сензори, които клиентите харесаха. А функцията, която те харесаха най-много, а именно сензорът за докосване, заема само 23 процента от всички функции, които са харесали.
Анализ 2:Търсене в пълен текст за помощ при шофиране и сигнали
Ако сега приемем, че именно през този сезон компанията за производство на автомобили въведе няколко функции за подпомагане на шофирането, включително някои сигнали.
Бизнесът би искал да знае следните неща:
- Какви типове сигнали за шофиране и функции за помощ харесаха клиентите?
- Колко клиенти харесаха комбинацията от сигнали и функции за помощ?
- Можем ли да извършим анализ въз основа на възрастта на клиентите, които са харесали както сигналите, така и функциите за помощ?
Търсене на сигнали за шофиране и функции за помощ, предпочитани от клиентите
Можем да търсим сигнали за шофиране и функции за помощ, които клиентите са харесали, като използваме заявка за пълен текст, но трябва да имаме предвид, че думата „Откриване“ може да се използва и като алтернатива на „Сигнали“ както следва:
--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)
')
Резултатите от горната заявка за пълен текст са както следва:
И така, използвайки заявка за пълен текст, ние намерихме отговора на първия бизнес въпрос относно типовете функции и сигнали, предпочитани от клиентите.
Следователно може да се заключи, че клиентите са харесали следните видове сигнали за шофиране и помощни функции:
- Сигнал за смяна на лентата
- Помощ при наклон
- Откриване на сблъсък
- Сигнал за налягане в гумите
Търсене на клиенти, които харесват всички сигнали за шофиране и функции за помощ
Малко по-сложен въпрос е да откриете колко клиенти са харесали всички функции за подпомагане на шофирането и сигнали и на това може да се отговори чрез запитване за пълен текст, както следва:
--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)
)')
Резултатът е както следва:
И така, има четири поръчки, при които клиентите са харесали както функциите за помощ при шофиране, така и сигналите.
Анализ въз основа на възрастта на клиентите, които са харесали функциите за помощ при шофиране и сигнали
За да получим повече информация, ще се опитаме да разберем функциите за помощ при шофиране и сигналите, които клиентите са харесали въз основа на тяхната възраст.
Можете също да извършите това, като използвате комбинацията от заявка за пълен текст и аналитични функции, предоставени в T-SQL, както следва:
-- 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
Резултатът е както следва:
Моля, вижте статията Изкуството на агрегирането на данни в SQL от прости към плъзгащи се агрегации, за да научите повече за това как да използвате аналитични функции в T-SQL.
Резюме на резултатите от анализа
В светлината на горния анализ, използващ пълнотекстово търсене, става ясно, че функциите за помощ при шофиране и сигнали за шофиране, които клиентите харесаха, принадлежат предимно към възрастовата група от 35 години.
И така, клиентите на възраст 35 години са харесали тези функции най-много, докато най-младият клиент, който е харесал тези функции, е на 18 години.
Най-възрастният клиент, който е харесал тези функции, е на 52 години.
От горния анализ може да се заключи, че предимно клиентите на възраст между 18 и 52 години са се радвали на помощ при шофиране и функции за предупреждение при шофиране, като клиентите, които харесват тези функции повече от други, са на 35 години.
Поздравления, успешно се научихте как да извършвате малко сложен анализ на продукта с помощта на пълнотекстово търсене.
Неща за правене
Сега, когато можете да направите анализа на продукта с пълнотекстово търсене, препоръчвам ви да опитате следното:
- Опитайте се да получите свързана информация, като намерите клиентите, които са харесали както сензорите, така и функциите за помощ при шофиране, но не и сигналите, когато са купили автомобила(ите).
- Имайки предвид тази статия, потърсете клиентите, които са харесали сигналите, но не и функциите за помощ при шофиране.
- Опитайте се да извършите анализ на възрастта на клиентите за сензорите, подобни на този, който направихме за помощ при шофиране и функции за предупреждение.