Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Thực hiện Phân tích Sản phẩm bằng Tìm kiếm Toàn văn của Máy chủ SQL. Phần 1

Bài viết này xem xét cách thực hiện phân tích sản phẩm cơ bản bằng Tìm kiếm toàn văn bản.

Ngoài ra, độc giả sẽ tìm hiểu một số ví dụ thực tế về phân tích sản phẩm liên quan đến bán hàng với sự trợ giúp của các truy vấn Toàn văn.

Tóm lại, bài viết này nhấn mạnh tầm quan trọng của Tìm kiếm toàn văn bản, cung cấp thông tin chi tiết về dữ liệu, cùng với việc trả lời nhiều truy vấn bán hàng từ quan điểm kinh doanh mà không cần áp dụng các phương pháp phức tạp hơn, tuy nhiên, điều này thực sự có lợi.

Giới thiệu về Phân tích Sản phẩm

Trước tiên, hãy để chúng tôi xem xét phân tích sản phẩm.

Phân tích sản phẩm là gì?

Phân tích sản phẩm theo quan điểm kinh doanh là phương pháp phân tích sản phẩm của bạn và doanh số bán hàng (dữ liệu) theo cách giúp bạn hiểu được điểm mạnh và điểm yếu của sản phẩm.

Ví dụ:ban lãnh đạo cao nhất của một công ty bán ô tô có thể muốn biết tất cả các tính năng của ô tô liên quan đến an toàn, bảo mật và cảm biến để biến nó thành một điểm bán hàng mạnh mẽ cho ô tô của họ.

Một ví dụ khác là khi một doanh nghiệp có thể quan tâm đến việc xem tất cả các sản phẩm được bán trong mùa mưa có chứa 'mưa', 'không thấm nước' hoặc 'không thấm nước' (trong phần mô tả) để hiểu liệu khách hàng có muốn mua bất kỳ sản phẩm mới nào cho mùa mưa hay không mùa (từ họ) hoặc không.

Tại sao cần phân tích sản phẩm?

Phân tích sản phẩm là chìa khóa để vận hành thành công doanh nghiệp và nó có thể giúp đưa ra những điểm cộng và điểm hạn chế của một doanh nghiệp.

Nó cũng có thể giúp doanh nghiệp đưa ra quyết định tốt hơn dựa trên các giao dịch mua hiện có.

Ngoài ra, phân tích sản phẩm có thể hỗ trợ doanh nghiệp hiểu được xu hướng kinh doanh và hướng đi của họ.

Làm thế nào để thực hiện phân tích sản phẩm?

Đối với một điều, cách cơ bản để phân tích sản phẩm của bạn là chạy các truy vấn SQL dựa trên cơ sở dữ liệu có chứa sản phẩm và dữ liệu bán hàng của nó.

Tuy nhiên, cách tốt hơn để có thêm thông tin là sử dụng Tìm kiếm toàn văn bản để truy vấn cơ sở dữ liệu bán hàng của bạn vì nó cung cấp các tiêu chí tìm kiếm được cải thiện mà không có sẵn trong các truy vấn SQL nói chung.

Phân tích sản phẩm với giới hạn Tìm kiếm toàn văn bản

Mặc dù có thể thực hiện phân tích tốt một sản phẩm với Tìm kiếm toàn văn bản, nhưng nó có hạn chế riêng.

Để có phân tích và báo cáo chuyên sâu và linh hoạt hơn về dữ liệu của bạn được hỗ trợ bởi cơ sở hạ tầng được xây dựng theo mục đích, bạn phải phát triển Giải pháp kho dữ liệu thông minh cho doanh nghiệp.

Điều kiện tiên quyết

Vui lòng xem qua các điều kiện tiên quyết để thực hiện phân tích sản phẩm bằng Tìm kiếm Toàn văn sẽ xuất hiện ở phần sau của bài viết này.

Kỹ năng T-SQL mạnh

Bài viết này hy vọng người đọc (dự định triển khai phân tích sản phẩm) có kỹ năng T-SQL vững vàng và có thể thoải mái viết và chạy các truy vấn SQL dựa trên (các) cơ sở dữ liệu.

Hiểu biết cơ bản và nâng cao về Tìm kiếm toàn văn bản

Bài báo giả định rằng những người đọc có ý định triển khai hướng dẫn sử dụng Tìm kiếm toàn văn bản có hiểu biết khá tốt về Tìm kiếm toàn văn bản và cách sử dụng của nó.

Vui lòng tham khảo bài viết Triển khai Tìm kiếm Toàn văn trong SQL Server 2016 dành cho Người dùng Nâng cao để hiểu được cấp độ nâng cao về Tìm kiếm Toàn Văn bản nếu bạn đã quen với các kiến ​​thức cơ bản của nó.

Tuy nhiên, vui lòng xem qua bài viết Thực hiện Tìm kiếm Toàn văn trong SQL Server 2016 cho người mới bắt đầu nếu bạn cần hiểu biết cơ bản trước khi bắt đầu sử dụng nâng cao Tìm kiếm Toàn văn bản.

Tìm kiếm toàn văn bản đã được cài đặt

Bên cạnh đó, bài viết này hy vọng bạn đã cài đặt Tìm kiếm toàn văn bản trên phiên bản SQL của mình.

Vui lòng cài đặt Tìm kiếm toàn văn bản vào máy chủ SQL như sau:

  1. Chạy trình cài đặt SQL.
  2. Chạy tệp thiết lập.
  3. Thêm dưới dạng một Tính năng.
  4. Chọn Máy chủ hiện tại của bạn.
  5. Chọn Tính năng phiên bản để thêm.

Vui lòng tham khảo bài viết Triển khai tìm kiếm toàn văn bản trong SQL Server 2016 cho người mới bắt đầu để có thông tin chi tiết về các bước được đề cập ở trên.

Cuối cùng, kiểm tra trạng thái Tìm kiếm toàn văn bản bằng cách chạy tập lệnh T-SQL sau trên cơ sở dữ liệu chính:

-- Is Full-Text Search installed then 1 or 0
SELECT fulltextserviceproperty('IsFulltextInstalled') as [Full-Text Search]

Đầu ra sẽ như sau (nếu Tìm kiếm toàn văn bản được cài đặt thành công):

Chuẩn bị Tìm kiếm Toàn văn để Phân tích Sản phẩm

Chuẩn bị chạy các truy vấn Toàn văn để thực hiện phân tích sản phẩm sau khi thiết lập cơ sở dữ liệu mẫu.

Thiết lập cơ sở dữ liệu mẫu (CarPlus)

Vui lòng thiết lập cơ sở dữ liệu mẫu có tên CarPlus như sau:

-- Create sample database (CarPlus)
CREATE DATABASE CarPlus;
GO
 
 
USE CarPlus;
 
-- (1) Create CarOrder table in the sample database
CREATE TABLE CarOrder (
    CarOrderId int NOT NULL IDENTITY(1,1),
    CustomerAge int,
    FeaturesLiked varchar(300) NOT NULL,
    CONSTRAINT [PK_CarOrder] PRIMARY KEY ([CarOrderId]))
 
 
-- (2) Add data to the table
SET IDENTITY_INSERT [dbo].[CarOrder] ON
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (1, 27, N'Traction Control System, Lane Change Alert, Reverse Parking Sensor, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (2, 43, N'Advanced Anti-lock Braking System, Immobiliser, Four Wheels Drive, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (3, 33, N'Traction Control System, Immobiliser, Hill Assist, Auto Climate Control, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (4, 35, N'Isofix child seat fittings, Lane Change Alert, Collision Detection, Start Button, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (5, 33, N'Advanced Anti-lock Braking System, Lane Change Alert, Reverse Parking Sensor, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (6, 27, N'Touch Sensor, Lane Change Alert, Child Safety Lock, Auto Climate Control, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (7, 33, N'Traction Control System, Lane Change Alert, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (8, 33, N'Advanced Anti-lock Braking System, Lane Change Alert, Collision Detection, Navigation System, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (9, 20, N'Traction Control System, Advanced Disc Brakes, Child Safety Lock, Navigation System, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (10, 27, N'Isofix child seat fittings, Remote Locking, Tyre Pressure Alert, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (11, 46, N'Isofix child seat fittings, Immobiliser, Four Wheels Drive, Start Button, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (12, 46, N'Traction Control System, Immobiliser, Collision Detection, Navigation System, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (13, 33, N'Advanced Anti-lock Braking System, Lane Change Alert, Hill Assist, Auto Climate Control, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (14, 33, N'Traction Control System, Lane Change Alert, Tyre Pressure Alert, Start Button, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (15, 40, N'Isofix child seat fittings, Lane Change Alert, Hill Assist, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (16, 33, N'Isofix child seat fittings, Immobiliser, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (17, 27, N'Touch Sensor, Lane Change Alert, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (18, 18, N'Touch Sensor, Lane Change Alert, Collision Detection, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (19, 33, N'Isofix child seat fittings, Lane Change Alert, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (20, 33, N'Advanced Anti-lock Braking System, Advanced Disc Brakes, Child Safety Lock, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (21, 27, N'Advanced Anti-lock Braking System, Immobiliser, Child Safety Lock, Start Button, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (22, 43, N'Advanced Anti-lock Braking System, Advanced Disc Brakes, Reverse Parking Sensor, Auto Climate Control, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (23, 33, N'Advanced Anti-lock Braking System, Immobiliser, Child Safety Lock, Navigation System, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (24, 46, N'Advanced Anti-lock Braking System, Remote Locking, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (25, 43, N'Touch Sensor, Lane Change Alert, Hill Assist, Navigation System, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (26, 32, N'Advanced Anti-lock Braking System, Immobiliser, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, Bluetooth')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (27, 32, N'Isofix child seat fittings, Immobiliser, Four Wheels Drive, Auto Climate Control, Advanced Cruise Control, Car Wifi')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (28, 26, N'Touch Sensor, Lane Change Alert, Hill Assist, Start Button, Advanced Cruise Control, DAB Radio')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (29, 43, N'Traction Control System, Lane Change Alert, Child Safety Lock, Start Button, Advanced Cruise Control, USB Connection')
INSERT INTO [dbo].[CarOrder] ([CarOrderId], [CustomerAge], [FeaturesLiked]) VALUES (30, 26, N'Touch Sensor, Remote Locking, Reverse Parking Sensor, Navigation System, Advanced Cruise Control, Bluetooth')
SET IDENTITY_INSERT [dbo].[CarOrder] OFF;
GO

Xác định sản phẩm

Mẫu CarPlus cơ sở dữ liệu chứa thông tin sau, được lưu trữ trong một bảng để đơn giản hóa độ phức tạp của cấu trúc cơ sở dữ liệu và hoàn toàn tập trung vào phân tích sản phẩm:

  1. Số Đơn đặt hàng (cho chiếc xe đã mua)
  2. Độ tuổi của khách hàng mua sản phẩm (ô tô)
  3. Các tính năng (của ô tô) mà khách hàng thích

Xin lưu ý rằng sản phẩm chúng tôi chọn để phân tích trong bài viết này là chiếc xe do khách hàng mua.

Tuy nhiên, chúng tôi có thể quan tâm nhiều hơn đến các tính năng mà khách hàng thích khi mua xe vì những tính năng này có thông tin quan trọng đối với doanh nghiệp.

Đặt hàng xe bảng của cơ sở dữ liệu được biểu diễn như sau:

Tạo danh mục Toàn văn

Bước đầu tiên khi cơ sở dữ liệu mẫu (CarPlus) đã được tạo và điền thành công là tạo Danh mục toàn văn.

Điều này cho phép triển khai Tìm kiếm toàn văn bản.

Vui lòng tạo Danh mục toàn văn bằng cách chạy tập lệnh T-SQL sau trên cơ sở dữ liệu mẫu:

-- Create Full-Text Catalog 
CREATE FULLTEXT CATALOG CarCatalog AS DEFAULT;  
GO  

Xác định chỉ mục Toàn văn trên cột Tính năng được yêu thích

Kể từ khi Tính năng được yêu thích sẽ là cột trung tâm được sử dụng trong phân tích sản phẩm, chúng tôi phải xác định Chỉ mục toàn văn bản trên đó để chạy các truy vấn toàn văn bản.

Viết tập lệnh T-SQL sau để xác định Chỉ mục toàn văn bản:

-- Define Full-Text Index on FeaturesLiked
CREATE FULLTEXT INDEX ON dbo.CarOrder(FeaturesLiked)   
   KEY INDEX PK_CarOrder
   WITH STOPLIST = SYSTEM;  
GO 

Xin lưu ý rằng bạn chỉ có thể xác định chỉ mục toàn văn trên một cột của bảng, vì vậy hãy chọn nó thật khôn ngoan.

Tổng số đơn đặt hàng theo độ tuổi của khách hàng

Trước tiên, chúng ta hãy thực hiện một phân tích nhanh để xem có bao nhiêu chiếc ô tô đã được bán cho những khách hàng thuộc một nhóm tuổi cụ thể bằng cách chạy tập lệnh sau:

--View total orders by customers age
SELECT CustomerAge,count(CarOrderId) as TotalOrders FROM dbo.CarOrder
GROUP BY CustomerAge
ORDER BY count(CarOrderId) DESC

Kết quả như sau:

Việc phân tích sẽ trở nên thú vị hơn khi chúng tôi áp dụng Tìm kiếm toàn văn bản.

Phân tích về các tính năng an toàn cho trẻ em (Tìm kiếm toàn văn bản)

Doanh nghiệp rất mong muốn biết các tính năng an toàn cho trẻ em mà khách hàng yêu thích khi họ mua xe.

Tìm 3 tính năng an toàn cho trẻ em hàng đầu mà khách hàng yêu thích

Trước tiên, hãy cùng chúng tôi tìm 3 tính năng an toàn cho trẻ em hàng đầu mà khách hàng yêu thích khi mua xe và bạn có thể tìm thấy điều này bằng cách sử dụng Tìm kiếm toàn văn bản như sau:

--View Top 3 child safety features liked using full-text search
SELECT TOP 3
  O.CarOrderId
 ,O.CustomerAge
 ,O.FeaturesLiked
FROM dbo.CarOrder O
WHERE CONTAINS(FeaturesLiked, '"*child*"')

Kết quả như sau:

Tìm các tính năng an toàn cho trẻ em ngoài Isofix và Khóa an toàn

Tuy nhiên, để đảm bảo rằng đây là hai tính năng an toàn cho trẻ em duy nhất mà khách hàng đã mua xe (trong mùa này) thích, chúng tôi cần sửa đổi truy vấn Toàn văn của mình để kiểm tra xem có thêm tính năng an toàn cho trẻ em nào không:

Để tìm điều này, hãy chạy truy vấn Tìm kiếm Toàn văn sau:

--View child safety features other than isofix and safety locked liked by customers
SELECT
  O.CarOrderId
 ,O.CustomerAge
 ,O.FeaturesLiked
FROM dbo.CarOrder O
WHERE CONTAINS(FeaturesLiked, '"*Child*" AND NOT "Child Safety Lock" AND NOT "Isofix*"')

Kết quả như sau:

Tóm tắt Kết quả Phân tích

Theo kết quả đầu ra ở trên, chúng ta có thể dễ dàng nói rằng khách hàng thích các tính năng an toàn cho trẻ em sau:

  1. Phụ kiện ghế trẻ em Isofix
  2. Khóa an toàn cho trẻ em

Bây giờ chúng ta chỉ còn lại hai khả năng sau:

  1. Đây là những tính năng an toàn cho trẻ em duy nhất mà doanh nghiệp cung cấp.
  2. Doanh nghiệp cung cấp một số tính năng an toàn cho trẻ em khác nhưng khách hàng không thích những tính năng này khi mua xe.

Dựa trên kết quả, chúng tôi phải đảm bảo rằng các tính năng an toàn cho trẻ em này sẽ không bị thay thế hoặc loại trừ trong mùa tiếp theo vì chúng dường như là một điểm mạnh bán hàng cho doanh nghiệp.

Phân tích các tính năng của phanh

Điều tiếp theo đối với doanh nghiệp là xem loại tính năng nào liên quan đến phanh mà khách hàng thích để có thể tập trung vào những tính năng đó trong đợt bán hàng sắp tới.

Tìm kiếm các tính năng phanh mà khách hàng yêu thích

Để tìm 5 tính năng liên quan đến phanh hàng đầu mà khách hàng thích, chúng tôi có thể chạy truy vấn Toàn văn sau:

-- Searching top 5 features related to brakes liked by the customers (full-text query)
SELECT TOP 5 O.CustomerAge,O.FeaturesLiked FROM dbo.CarOrder O
WHERE CONTAINS(FeaturesLiked,'FORMSOF(INFLECTIONAL,brake)')

Kết quả như sau:

Tóm tắt Kết quả Phân tích

Theo kết quả của câu hỏi Toàn văn ở trên, giờ đây chúng tôi biết rằng các tính năng liên quan đến hệ thống phanh mà khách hàng thích vào thời điểm mua xe ô tô như sau:

  1. Hệ thống chống bó cứng phanh nâng cao
  2. Phanh đĩa nâng cao

Có vẻ như trong số rất nhiều tính năng liên quan đến hệ thống phanh, mùa này, khách hàng đã chọn hai tính năng trên và có lẽ một số thông tin khác có thể giúp doanh nghiệp cải thiện các quyết định trong tương lai.

Xin chúc mừng, bạn đã học thành công cách thực hiện phân tích sản phẩm bằng Tìm kiếm toàn văn bản.

Giữ liên lạc vì Phần 2 của bài viết này chứa một dạng phân tích sản phẩm nâng cao hơn một chút bằng cách sử dụng Tìm kiếm toàn văn bản.

Việc cần làm

Bây giờ bạn có thể thực hiện phân tích sản phẩm với Tìm kiếm toàn văn bản, hãy thử các cách sau:

  1. Cố gắng có được thông tin tương quan bằng cách tìm những khách hàng thích cả hệ thống phanh và các tính năng an toàn cho trẻ em khi mua (các) ô tô.
  2. Hãy ghi nhớ bài viết này, hãy tìm kiếm những khách hàng thích phụ kiện ghế trẻ em Isofix tính năng nhưng không phải là Khóa an toàn cho trẻ em tính năng.
  3. Cố gắng tìm kiếm những khách hàng không thích Phanh đĩa nâng cao nhưng đã thích Hệ thống chống bó cứng phanh nâng cao .


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cột được tính toán trong Mã EF Đầu tiên

  2. Kết quả Truy vấn Email dưới dạng Bảng HTML trong SQL Server (T-SQL)

  3. Kết nối với máy chủ SQL với xác thực Windows từ máy Linux thông qua JDBC

  4. Làm thế nào để kiểm tra kết quả công việc gói SSIS sau khi nó đã hoàn thành việc thực thi?

  5. Sự cố khi mở tệp MDF vì nó báo lỗi SQL 5171? - Bài đăng của khách của Andre Williams