Giản đồ Google Cloud Search là một cấu trúc JSON xác định các đối tượng, thuộc tính và tuỳ chọn được sử dụng trong việc lập chỉ mục và truy vấn dữ liệu của bạn. Trình kết nối nội dung sẽ đọc dữ liệu trong kho lưu trữ của bạn và dựa trên giản đồ, cấu trúc và lập chỉ mục đã đăng ký cho dữ liệu.
Bạn có thể tạo giản đồ bằng cách cung cấp đối tượng giản đồ JSON cho API rồi đăng ký tài khoản. Bạn phải đăng ký một đối tượng giản đồ cho mỗi kho lưu trữ trước khi bạn có thể lập chỉ mục dữ liệu của mình.
Tài liệu này trình bày các kiến thức cơ bản về việc tạo giản đồ. Để biết thông tin về cách thực hiện để điều chỉnh giản đồ của bạn nhằm cải thiện trải nghiệm tìm kiếm, hãy tham khảo Cải thiện chất lượng tìm kiếm.
Tạo giản đồ
Sau đây là danh sách các bước dùng để tạo giản đồ Cloud Search:
- Xác định hành vi dự kiến của người dùng
- Khởi chạy một nguồn dữ liệu
- Tạo giản đồ
- Hoàn tất giản đồ mẫu
- Đăng ký giản đồ của bạn
- Lập chỉ mục dữ liệu
- Kiểm tra giản đồ
- Điều chỉnh giản đồ
Xác định hành vi dự kiến của người dùng
Việc dự đoán các loại cụm từ tìm kiếm mà người dùng đưa ra sẽ giúp bạn định hướng chiến lược của mình để tạo giản đồ.
Ví dụ: khi đưa ra truy vấn dựa trên cơ sở dữ liệu phim, bạn có thể dự đoán người dùng đưa ra một truy vấn chẳng hạn như "Cho tôi xem tất cả các phim có sự tham gia của Robert Redford". Do đó, giản đồ của bạn phải hỗ trợ các kết quả truy vấn dựa trên "tất cả các phim có một diễn viên cụ thể".
Để xác định giản đồ nhằm phản ánh mẫu hành vi của người dùng, hãy cân nhắc thực hiện những tác vụ này:
- Đánh giá một tập hợp đa dạng các cụm từ tìm kiếm mong muốn của những người dùng khác nhau.
- Xác định các đối tượng có thể được dùng trong truy vấn. Đối tượng có tính logic tập dữ liệu có liên quan, chẳng hạn như một bộ phim trong cơ sở dữ liệu về phim ảnh.
- Xác định các thuộc tính và giá trị tạo nên đối tượng và có thể là được dùng trong truy vấn. Thuộc tính là các thuộc tính có thể lập chỉ mục của đối tượng; chúng có thể bao gồm các giá trị gốc hoặc các đối tượng khác. Ví dụ: một đối tượng phim có thể có các thuộc tính như tên phim và ngày phát hành dưới dạng giá trị gốc. Đối tượng phim cũng có thể chứa các thuộc tính khác các đối tượng (chẳng hạn như thành viên tham gia) có các thuộc tính riêng, chẳng hạn như tên hoặc vai trò.
- Xác định ví dụ về các giá trị hợp lệ cho thuộc tính. Giá trị là dữ liệu thực tế được lập chỉ mục cho một thuộc tính. Ví dụ: tên phim trong cơ sở dữ liệu của bạn có thể là "Raiders of the Lost Ark."
- Xác định những cách sắp xếp và xếp hạng mà người dùng mong muốn. Ví dụ: khi truy vấn phim, người dùng có thể muốn sắp xếp theo trình tự thời gian và xếp hạng theo mức phân loại của người xem và không cần sắp xếp theo thứ tự bảng chữ cái.
- (không bắt buộc) Cân nhắc xem một trong các cơ sở lưu trú của bạn có đại diện cho một ngữ cảnh mà tìm kiếm có thể được thực thi, chẳng hạn như cụm từ tìm kiếm của người dùng vai trò công việc hoặc để có thể cung cấp đề xuất tự động hoàn thành dựa trên ngữ cảnh. Ví dụ: đối với những người tìm kiếm cơ sở dữ liệu về phim ảnh, người dùng có thể chỉ quan tâm đến một thể loại phim nhất định. Người dùng sẽ xác định những gì thể loại nội dung mà họ muốn tìm kiếm trở lại, có thể là một phần của người dùng hồ sơ. Sau đó, khi người dùng bắt đầu nhập truy vấn về phim, chỉ phim thuộc thể loại họ ưa thích, chẳng hạn như "phim hành động", được đề xuất là của đề xuất tự động hoàn thành.
- Lập danh sách các đối tượng, thuộc tính và giá trị mẫu có thể dùng trong các lượt tìm kiếm. (Để biết thông tin chi tiết về cách sử dụng danh sách này, hãy xem phần Xác định các tuỳ chọn toán tử.)
Khởi chạy nguồn dữ liệu
Nguồn dữ liệu đại diện cho dữ liệu từ một kho lưu trữ đã được lập chỉ mục và được lưu trữ trong Google Cloud. Để xem hướng dẫn về cách khởi tạo một nguồn dữ liệu, tham chiếu đến Quản lý nguồn dữ liệu của bên thứ ba.
Kết quả tìm kiếm của người dùng được trả về từ nguồn dữ liệu. Khi người dùng nhấp vào kết quả tìm kiếm, Cloud Search sẽ chuyển người dùng đến mục thực tế bằng cách sử dụng URL được cung cấp trong yêu cầu lập chỉ mục.
Xác định đối tượng
Đơn vị dữ liệu cơ bản trong giản đồ là đối tượng, còn được gọi là giản đồ " đối tượng", đó là một cấu trúc logic của dữ liệu. Trong cơ sở dữ liệu phim, một cấu trúc logic của dữ liệu là "phim". Một đối tượng khác có thể là "người" đến đại diện cho dàn diễn viên và đoàn làm phim tham gia bộ phim.
Mỗi đối tượng trong giản đồ có một loạt các thuộc tính hoặc thuộc tính mô tả đối tượng, chẳng hạn như tiêu đề và thời lượng của một bộ phim hoặc tên và ngày sinh của một người. Các thuộc tính của một đối tượng có thể bao gồm phần tử gốc giá trị hoặc đối tượng khác.
Hình 1 hiển thị các đối tượng phim và người cũng như các đối tượng liên kết các thuộc tính.
![Bản vẽ kết nối giản đồ giữa các thực thể](https://developers-dot-devsite-v2-prod.appspot.com/static/cloud-search/images/schemaExample.png?authuser=5&hl=vi)
Giản đồ Cloud Search là
về cơ bản là danh sách các câu lệnh định nghĩa đối tượng được xác định trong
Thẻ objectDefinitions
. Đoạn mã giản đồ sau đây cho thấy
các câu lệnh objectDefinitions
cho đối tượng giản đồ phim và giản đồ person.
{
"objectDefinitions": [
{
"name": "movie",
...
},
{
"name": "person",
...
}
]
}
Khi xác định một đối tượng giản đồ, bạn cần cung cấp name
cho đối tượng này phải
là duy nhất trong số tất cả các đối tượng khác trong giản đồ. Thông thường, bạn sẽ sử dụng name
mô tả đối tượng, chẳng hạn như movie
cho đối tượng phim. Giản đồ
dịch vụ này sử dụng trường name
làm giá trị nhận dạng khoá cho các đối tượng có thể lập chỉ mục. Để
để biết thêm thông tin về trường name
, hãy tham khảo
Định nghĩa đối tượng.
Xác định thuộc tính của đối tượng
Như đã nêu trong tài liệu tham khảo cho
ObjectDefinition,
theo sau là tên đối tượng là một tập hợp
options
,
và danh sách
propertyDefinitions
.
Chiến lược phát hành đĩa đơn
options
có thể
còn bao gồm
freshnessOptions
và
displayOptions
.
Chiến lược phát hành đĩa đơn
freshnessOptions
được dùng để điều chỉnh thứ hạng tìm kiếm dựa trên độ mới của một mặt hàng. Chiến lược phát hành đĩa đơn
displayOptions
được dùng để xác định xem các nhãn và thuộc tính cụ thể có được hiển thị trong
các kết quả tìm kiếm cho một đối tượng.
Chiến lược phát hành đĩa đơn
propertyDefinitions
là nơi bạn xác định các thuộc tính cho một đối tượng, chẳng hạn như tên phim
và ngày phát hành.
Đoạn mã sau đây cho thấy đối tượng movie
có hai thuộc tính: movieTitle
và releaseDate
.
{
"objectDefinitions": [
{
"name": "movie",
"propertyDefinitions": [
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
{
"name": "releaseDate",
"isReturnable": true,
"isSortable": true,
"datePropertyOptions": {
"operatorOptions": {
"operatorName": "released",
"lessThanOperatorName": "releasedbefore",
"greaterThanOperatorName": "releasedafter"
}
},
"displayOptions": {
"displayLabel": "Release date"
}
...
]
}
]
}
Chiến lược phát hành đĩa đơn PropertyDefinition bao gồm các mục sau:
- chuỗi
name
. - Danh sách các tuỳ chọn không phân biệt về loại, chẳng hạn như
isReturnable
trong phần trước đoạn trích. - Một loại và các tuỳ chọn cụ thể về từng loại được liên kết,
như
textPropertyOptions
vàretrievalImportance
trong đoạn mã trước đó. operatorOptions
mô tả cách thuộc tính được sử dụng làm toán tử tìm kiếm.- Một hoặc nhiều
displayOptions
, chẳng hạn nhưdisplayLabel
trong đoạn mã trước.
name
của một thuộc tính phải là duy nhất trong đối tượng chứa
nhưng tên này vẫn có thể được dùng trong các đối tượng và đối tượng phụ khác.
Trong Hình 1, tên phim và ngày phát hành đã được xác định hai lần:
một lần vào đối tượng movie
và lặp lại trong đối tượng phụ filmography
của
Đối tượng person
. Giản đồ này sử dụng lại trường movieTitle
để giản đồ này có thể hỗ trợ 2 loại hành vi tìm kiếm:
- Hiện kết quả phim khi người dùng tìm tên một bộ phim.
- Hiện kết quả về người khi người dùng tìm tên phim mà một diễn viên đã đóng.
Tương tự, giản đồ này cũng sử dụng lại trường releaseDate
vì trường đó có cùng
ý nghĩa của hai trường movieTitle
.
Trong quá trình phát triển giản đồ của riêng bạn, hãy cân nhắc mối liên hệ giữa kho lưu trữ các trường chứa dữ liệu mà bạn muốn khai báo nhiều lần trong giản đồ.
Thêm các tuỳ chọn không phân biệt về loại
Chiến lược phát hành đĩa đơn PropertyDefinition liệt kê các tuỳ chọn chức năng tìm kiếm chung chung cho tất cả sản phẩm bất kể loại dữ liệu là gì.
isReturnable
– Cho biết liệu tài sản có xác định được dữ liệu cần được được trả về trong kết quả tìm kiếm qua API Truy vấn. Toàn bộ phim ví dụ thuộc tính có thể trả về. Những thuộc tính không thể trả về có thể được dùng để tìm kiếm hoặc xếp hạng kết quả mà không cần trả lại cho người dùng.isRepeatable
– Cho biết thuộc tính có được phép sử dụng nhiều giá trị hay không. Để ví dụ: một bộ phim chỉ có một ngày phát hành nhưng có thể có nhiều diễn viên.isSortable
– Cho biết thuộc tính có thể được dùng để sắp xếp. Chiến dịch này không thể đúng đối với những thuộc tính có thể lặp lại. Ví dụ: kết quả tìm kiếm phim có thể được sắp xếp theo ngày phát hành hoặc xếp hạng khán giả.isFacetable
– Cho biết thuộc tính có thể được dùng để tạo các thuộc tính. Một khía cạnh được dùng để tinh chỉnh kết quả tìm kiếm, qua đó người dùng nhìn thấy các kết quả ban đầu, sau đó thêm tiêu chí hoặc thuộc tính để tinh chỉnh thêm các kết quả đó kết quả. Lựa chọn này không thể đúng đối với các thuộc tính có loại là đối tượng và Giá trịisReturnable
phải là true để đặt tuỳ chọn này. Cuối cùng, phương án này chỉ được hỗ trợ cho các thuộc tính enum, boolean và văn bản. Ví dụ: trong giản đồ mẫu, chúng tôi có thể tạogenre
,actorName
,userRating
vàmpaaRating
có thể chỉnh sửa trên khuôn mặt để cho phép chúng được dùng để tinh chỉnh tính tương tác của kết quả tìm kiếm.isWildcardSearchable
cho biết rằng người dùng có thể thực hiện tìm kiếm theo ký tự đại diện cho thuộc tính này. Tuỳ chọn này chỉ có trên các thuộc tính văn bản. Cách ký tự đại diện Tính năng tìm kiếm hoạt động trên trường văn bản phụ thuộc vào giá trị đã đặt trong Trường exactMatchWithOperator. Nếu bạn đặtexactMatchWithOperator
thànhtrue
, giá trị văn bản được mã hoá thành một giá trị nguyên tử và một lượt tìm kiếm theo ký tự đại diện là đã thực hiện dựa trên hiệu suất đó. Ví dụ: nếu giá trị văn bản làscience-fiction
, một truy vấn ký tự đại diệnscience-*
khớp với cụm từ đó. Nếu bạn đặtexactMatchWithOperator
thànhfalse
, giá trị văn bản được mã hoá và tìm kiếm theo ký tự đại diện được thực hiện dựa trên từng mã thông báo. Ví dụ: nếu giá trị văn bản là "khoa học viễn tưởng", thì ký tự đại diện truy vấnsci*
hoặcfi*
khớp với mục, nhưngscience-*
không khớp với mục đó.
Các tham số chức năng tìm kiếm chung này đều là giá trị boolean; chúng
tất cả đều có giá trị mặc định là false
và phải được đặt thành true
để sử dụng.
Bảng sau đây cho thấy các tham số boolean được đặt thành true
cho mọi thuộc tính của đối tượng movie
:
Thuộc tính | isReturnable |
isRepeatable |
isSortable |
isFacetable |
isWildcardSearchable |
---|---|---|---|---|---|
movieTitle |
đúng | đúng | |||
releaseDate |
đúng | đúng | |||
genre |
đúng | đúng | đúng | ||
duration |
đúng | ||||
actorName |
đúng | đúng | đúng | đúng | |
userRating |
đúng | đúng | |||
mpaaRating |
đúng | đúng |
Cả genre
và actorName
đều đã đặt isRepeatable
thành true
vì một bộ phim có thể thuộc nhiều thể loại và thường có
có nhiều hơn một diễn viên. Một thuộc tính không thể sắp xếp được nếu thuộc tính đó có thể lặp lại
hoặc nằm trong một đối tượng phụ có thể lặp lại.
Xác định loại
Chiến lược phát hành đĩa đơn
PropertyDefinition
phần tham chiếu liệt kê một số xxPropertyOptions
, trong đó xx
là một loại cụ thể,
chẳng hạn như boolean
. Để đặt loại dữ liệu cho thuộc tính, bạn phải xác định
đối tượng kiểu dữ liệu thích hợp. Xác định đối tượng kiểu dữ liệu cho thuộc tính
sẽ thiết lập loại dữ liệu của tài sản đó. Ví dụ: xác định
textPropertyOptions
cho thuộc tính movieTitle
cho biết phim này
tiêu đề là loại văn bản. Đoạn mã sau đây cho thấy thuộc tính movieTitle
khi textPropertyOptions
đặt loại dữ liệu.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
...
},
...
},
Mỗi tài sản chỉ có thể được liên kết với một loại dữ liệu. Ví dụ: trong phim của chúng tôi
Giản đồ, releaseDate
chỉ có thể là một ngày (ví dụ: 2016-01-13
) hoặc một chuỗi
(ví dụ: January 13, 2016
), nhưng không phải cả hai.
Dưới đây là các đối tượng kiểu dữ liệu dùng để chỉ định kiểu dữ liệu cho trong giản đồ phim mẫu:
Thuộc tính | Đối tượng kiểu dữ liệu |
---|---|
movieTitle |
textPropertyOptions |
releaseDate |
datePropertyOptions |
genre |
enumPropertyOptions |
duration |
textPropertyOptions |
actorName |
textPropertyOptions |
userRating |
integerPropertyOptions |
mpaaRating |
textPropertyOptions |
Loại dữ liệu mà bạn chọn cho tài sản phụ thuộc vào các trường hợp sử dụng dự kiến của bạn.
Trong tình huống tưởng tượng của giản đồ phim này, người dùng được kỳ vọng
muốn sắp xếp kết quả theo trình tự thời gian, vì vậy releaseDate
là đối tượng ngày tháng.
Ví dụ: nếu có một trường hợp sử dụng dự kiến là so sánh các bản phát hành vào tháng 12
trong những năm có bản phát hành vào tháng 1, thì định dạng chuỗi có thể hữu ích.
Định cấu hình các tuỳ chọn theo từng loại
Chiến lược phát hành đĩa đơn
PropertyDefinition
phần tham khảo liên kết đến các lựa chọn cho từng loại. Cụ thể nhất cho từng loại
là không bắt buộc, ngoại trừ danh sách possibleValues
trong
enumPropertyOptions
. Ngoài ra, tuỳ chọn orderedRanking
cho phép bạn
tương ứng với nhau. Chiến lược phát hành đĩa đơn
đoạn mã sau cho biết thuộc tính movieTitle
có textPropertyOptions
việc đặt loại dữ liệu và bằng tuỳ chọn dành riêng cho từng loại retrievalImportance
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
...
},
...
}
Dưới đây là các tuỳ chọn bổ sung dành riêng cho từng loại được dùng trong giản đồ mẫu:
Thuộc tính | Loại | Tuỳ chọn theo từng loại |
---|---|---|
movieTitle |
textPropertyOptions |
retrievalImportance |
releaseDate |
datePropertyOptions |
|
genre |
enumPropertyOptions |
|
duration |
textPropertyOptions |
|
actorName |
textPropertyOptions |
|
userRating |
integerPropertyOptions |
orderedRanking , maximumValue |
mpaaRating |
textPropertyOptions |
Xác định các tuỳ chọn toán tử
Ngoài các tuỳ chọn riêng cho từng loại, mỗi loại còn có một tập hợp các tuỳ chọn
operatorOptions
Những lựa chọn này mô tả cách tài sản được sử dụng làm
toán tử tìm kiếm. Đoạn mã sau đây cho thấy thuộc tính movieTitle
có
textPropertyOptions
cài đặt loại dữ liệu và bằng tham số
Các tuỳ chọn cụ thể theo loại retrievalImportance
và operatorOptions
.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
...
}
Mỗi operatorOptions
có một operatorName
, chẳng hạn như title
cho một
movieTitle
. Tên toán tử là toán tử tìm kiếm của thuộc tính. Đáp
toán tử tìm kiếm là thông số thực tế mà bạn muốn người dùng sử dụng
khi thu hẹp phạm vi tìm kiếm. Ví dụ: để tìm kiếm phim dựa trên tên phim,
người dùng sẽ nhập title:movieName
, trong đó movieName
là tên của một bộ phim.
Tên nhà vận hành không cần phải giống với tên của tài sản. Thay vào đó, bạn nên sử dụng tên toán tử phản ánh những từ thông dụng nhất do người dùng trong tổ chức của bạn tạo ra. Ví dụ: nếu người dùng của bạn thích cụm từ "name" thay vì "title" cho một tựa phim, thì tên toán tử sẽ là được đặt thành "name".
Bạn có thể sử dụng cùng một tên toán tử cho nhiều thuộc tính, miễn là tất cả
các thuộc tính sẽ phân giải thành cùng một loại. Khi sử dụng tên toán tử dùng chung trong khoảng thời gian
một truy vấn thì tất cả thuộc tính sử dụng tên toán tử đó đều được truy xuất. Ví dụ:
giả sử đối tượng phim có plotSummary
và plotSynopsis
và mỗi thuộc tính trong số này có operatorName
là plot
. Như
miễn là cả hai thuộc tính này đều là văn bản (textPropertyOptions
), một thuộc tính duy nhất
bằng cách sử dụng toán tử tìm kiếm plot
sẽ truy xuất cả hai.
Ngoài operatorName
, các thuộc tính có thể sắp xếp có thể có
Các trường lessThanOperatorName
và greaterThanOperatorName
trong operatorOptions
.
Người dùng có thể sử dụng các tuỳ chọn này để tạo truy vấn dựa trên thông tin so sánh với
giá trị đã gửi.
Cuối cùng, textOperatorOptions
có trường exactMatchWithOperator
trong
operatorOptions
. Nếu bạn
đặt exactMatchWithOperator
thành true
, thì chuỗi truy vấn phải
khớp với toàn bộ giá trị thuộc tính chứ không chỉ đơn thuần tìm thấy trong văn bản.
Giá trị văn bản được coi là một giá trị nguyên tử trong các lượt tìm kiếm toán tử và
khớp thuộc tính.
Ví dụ: hãy cân nhắc lập chỉ mục các đối tượng Sách hoặc Phim có thuộc tính thể loại.
Các thể loại có thể bao gồm "Khoa học viễn tưởng", "Khoa học" và "Hư cấu". Bằng
exactMatchWithOperator
được đặt thành false
hoặc được bỏ qua,
tìm kiếm một thể loại hoặc
chọn "Khoa học" hoặc "Hư cấu" thuộc tính này cũng sẽ
trả về kết quả cho " Science-Fiction" dưới dạng văn bản được mã hoá kỹ thuật số
"Khoa học" và "Hư cấu" có trong "Khoa học-giả tưởng".
Khi exactMatchWithOperator
là true
,
văn bản được coi là một mã thông báo, nên cả hai đều không
"Khoa học" cũng như "Hư cấu" khớp với " Science-Fiction".
(Không bắt buộc) Thêm phần displayOptions
Có phần displayOptions
không bắt buộc ở cuối
Mục propertyDefinition
. Phần này chứa một chuỗi displayLabel
.
displayLabel
là một nhãn văn bản nên dùng, thân thiện với người dùng
cho cơ sở lưu trú. Nếu thuộc tính được định cấu hình để hiển thị bằng
ObjectDisplayOptions,
thì nhãn này sẽ xuất hiện trước cơ sở lưu trú. Nếu tài sản đã được định cấu hình
cho màn hình và displayLabel
không được xác định, chỉ có giá trị thuộc tính là
được hiển thị.
Đoạn mã sau đây cho thấy thuộc tính movieTitle
có displayLabel
được đặt thành 'Tiêu đề'.
{
"name": "movieTitle",
"isReturnable": true,
"isWildcardSearchable": true,
"textPropertyOptions": {
"retrievalImportance": { "importance": "HIGHEST" },
"operatorOptions": {
"operatorName": "title"
}
},
"displayOptions": {
"displayLabel": "Title"
}
},
Sau đây là các giá trị displayLabel
cho tất cả thuộc tính của movie
trong giản đồ mẫu:
Thuộc tính | displayLabel |
---|---|
movieTitle |
Title |
releaseDate |
Release date |
genre |
Genre |
duration |
Run length |
actorName |
Actor |
userRating |
Audience score |
mpaaRating |
MPAA rating |
(Không bắt buộc) Thêm phần suggestionFilteringOperators[]
Có thuộc tính không bắt buộc
suggestionFilteringOperators[]
ở cuối phần propertyDefinition
bất kỳ. Sử dụng phần này để
xác định thuộc tính dùng để lọc các đề xuất tự động hoàn thành. Ví dụ: bạn
có thể xác định toán tử của genre
để lọc đề xuất dựa trên
thể loại phim ưa thích. Sau đó, khi người dùng nhập cụm từ tìm kiếm, chỉ những cụm từ đó
phim phù hợp với thể loại họ ưa thích được hiển thị trong phần tự động hoàn thành
nội dung đề xuất.
Đăng ký giản đồ
Để nhận được dữ liệu có cấu trúc từ các truy vấn Cloud Search, bạn phải đăng ký giản đồ của bạn bằng dịch vụ giản đồ Cloud Search. Để đăng ký giản đồ, bạn cần mã nguồn dữ liệu mà bạn nhận được trong Khởi động một nguồn dữ liệu.
Sử dụng mã nguồn dữ liệu, tạo UpdateSchema yêu cầu đăng ký giản đồ của bạn.
Như đã trình bày chi tiết trên UpdateSchema trang tham khảo, phát hành yêu cầu HTTP sau đây để đăng ký giản đồ của bạn:
PUT https://cloudsearch.googleapis.com/v1/indexing/{name=datasources/*}/schema
Nội dung yêu cầu của bạn phải có các thông tin sau:
{ "validateOnly": // true or false, "schema": { // ... Your complete schema object ... } }
Dùng lựa chọn validateOnly
để kiểm tra tính hợp lệ của giản đồ mà không cần
đăng ký tài khoản.
Lập chỉ mục dữ liệu
Sau khi bạn đăng ký giản đồ, hãy điền vào nguồn dữ liệu bằng cách sử dụng Chỉ mục cuộc gọi. Lập chỉ mục thường được thực hiện trong trình kết nối nội dung của bạn.
Khi sử dụng giản đồ phim, yêu cầu lập chỉ mục API REST cho một bộ phim sẽ sẽ có dạng như sau:
{
"name": "datasource/<data_source_id>/items/titanic",
"acl": {
"readers": [
{
"gsuitePrincipal": {
"gsuiteDomain": true
}
}
]
},
"metadata": {
"title": "Titanic",
"sourceRepositoryUrl": "http://www.imdb.com/title/tt2234155/?ref_=nv_sr_1",
"objectType": "movie"
},
"structuredData": {
"object": {
"properties": [
{
"name": "movieTitle",
"textValues": {
"values": [
"Titanic"
]
}
},
{
"name": "releaseDate",
"dateValues": {
"values": [
{
"year": 1997,
"month": 12,
"day": 19
}
]
}
},
{
"name": "actorName",
"textValues": {
"values": [
"Leonardo DiCaprio",
"Kate Winslet",
"Billy Zane"
]
}
},
{
"name": "genre",
"enumValues": {
"values": [
"Drama",
"Action"
]
}
},
{
"name": "userRating",
"integerValues": {
"values": [
8
]
}
},
{
"name": "mpaaRating",
"textValues": {
"values": [
"PG-13"
]
}
},
{
"name": "duration",
"textValues": {
"values": [
"3 h 14 min"
]
}
}
]
}
},
"content": {
"inlineContent": "A seventeen-year-old aristocrat falls in love with a kind but poor artist aboard the luxurious, ill-fated R.M.S. Titanic.",
"contentFormat": "TEXT"
},
"version": "01",
"itemType": "CONTENT_ITEM"
}
Hãy lưu ý cách giá trị của movie
trong trường objectType
khớp với đối tượng
tên định nghĩa trong giản đồ. Bằng cách khớp hai giá trị này, Cloud Search biết được
đối tượng giản đồ nào cần sử dụng trong quá trình lập chỉ mục.
Ngoài ra, hãy lưu ý cách sử dụng quá trình lập chỉ mục của thuộc tính giản đồ releaseDate
các thuộc tính phụ của year
, month
và day
mà nó kế thừa vì nó
được xác định là loại dữ liệu date
bằng cách sử dụng datePropertyOptions
để xác định.
Tuy nhiên, vì year
, month
và day
không được xác định trong giản đồ, bạn
không thể truy vấn một trong các thuộc tính đó (ví dụ: year
).
Ngoài ra, hãy lưu ý cách lập chỉ mục tài sản lặp lại actorName
bằng cách sử dụng một danh sách
giá trị.
Xác định các vấn đề tiềm ẩn khi lập chỉ mục
Hai vấn đề phổ biến nhất liên quan đến giản đồ và lập chỉ mục là:
Yêu cầu lập chỉ mục của bạn có chứa một đối tượng giản đồ hoặc tên thuộc tính không được đã đăng ký với dịch vụ schema. Vấn đề này khiến thuộc tính hoặc đối tượng bị bỏ qua.
Yêu cầu lập chỉ mục của bạn có thuộc tính có giá trị loại khác với loại đã đăng ký trong giản đồ. Sự cố này khiến Cloud Search trả về lỗi tại thời điểm lập chỉ mục.
Kiểm thử giản đồ bằng một số loại truy vấn
Trước khi đăng ký giản đồ cho một kho lưu trữ dữ liệu sản xuất lớn, hãy cân nhắc kiểm thử với một kho lưu trữ dữ liệu kiểm thử nhỏ hơn. Kiểm thử bằng kho lưu trữ kiểm thử nhỏ hơn này giúp bạn nhanh chóng điều chỉnh giản đồ, và xoá dữ liệu được lập chỉ mục mà không ảnh hưởng đến chỉ mục lớn hơn hoặc chỉ mục sản xuất hiện có. Đối với kho lưu trữ dữ liệu kiểm thử, hãy tạo ACL chỉ cấp quyền cho người dùng thử nghiệm để những người dùng khác sẽ không xem dữ liệu này trong kết quả tìm kiếm.
Để tạo giao diện tìm kiếm nhằm xác thực truy vấn tìm kiếm, hãy tham khảo Giao diện tìm kiếm
Phần này chứa một số truy vấn mẫu khác nhau mà bạn có thể sử dụng để kiểm tra một giản đồ phim.
Kiểm thử bằng truy vấn chung
Truy vấn chung trả về tất cả các mục trong nguồn dữ liệu có chứa một truy vấn cụ thể . Khi sử dụng giao diện tìm kiếm, bạn có thể chạy truy vấn chung cho một bộ phim nguồn dữ liệu bằng cách nhập từ "titanic" rồi nhấn vào Return. Tất cả phim có từ "titanic" cần được trả về trong kết quả tìm kiếm.
Kiểm thử với một toán tử
Việc thêm một toán tử vào truy vấn sẽ giới hạn kết quả ở những mục phù hợp với truy vấn đó
giá trị toán tử. Ví dụ: bạn có thể sử dụng toán tử actor
để tìm
tất cả phim có sự tham gia của một diễn viên cụ thể. Khi sử dụng giao diện tìm kiếm, bạn có thể thực hiện
truy vấn toán tử này chỉ bằng cách nhập một cặp operator=value, chẳng hạn như
"actor:Zane" rồi nhấn "actor:Zane". Tất cả phim có sự tham gia của Zane
cần được trả về trong kết quả tìm kiếm.
Điều chỉnh giản đồ của bạn
Sau khi giản đồ và dữ liệu của bạn được sử dụng, hãy tiếp tục theo dõi xem những gì đang hoạt động và không hiệu quả đối với người dùng. Bạn nên cân nhắc điều chỉnh giản đồ trong các trường hợp sau:
- Lập chỉ mục một trường chưa được lập chỉ mục trước đó. Ví dụ: người dùng của bạn có thể tìm kiếm nhiều lần các phim dựa trên tên đạo diễn, vì vậy bạn có thể điều chỉnh giản đồ của bạn để hỗ trợ tên giám đốc với vai trò là toán tử.
- Thay đổi tên toán tử tìm kiếm dựa trên phản hồi của người dùng. Tên nhà cung cấp dịch vụ là thân thiện với người dùng. Nếu người dùng của bạn thường xuyên "nhớ" sai rồi tên toán tử, bạn có thể cân nhắc việc thay đổi tên đó.
Lập chỉ mục lại sau khi thay đổi giản đồ
Để thay đổi bất kỳ giá trị nào sau đây trong giản đồ, bạn không cần phải lập chỉ mục lại dữ liệu của bạn. Bạn chỉ cần gửi UpdateSchema yêu cầu và chỉ mục của bạn sẽ tiếp tục hoạt động:
- Tên nhà cung cấp dịch vụ.
- Giá trị tối thiểu và tối đa là số nguyên.
- Thứ hạng theo thứ tự số nguyên và enum.
- Tùy chọn về độ mới.
- Tùy chọn hiển thị.
Đối với những thay đổi sau, dữ liệu đã lập chỉ mục trước đó sẽ tiếp tục hoạt động theo giản đồ đã đăng ký trước đó. Tuy nhiên, bạn phải lập chỉ mục lại các mục nhập hiện có để xem các thay đổi dựa trên giản đồ được cập nhật nếu có các thay đổi:
- Thêm hoặc xoá thuộc tính hoặc đối tượng mới
- Thay đổi
isReturnable
,isFacetable
hoặcisSortable
từfalse
thànhtrue
.
Bạn nên đặt isFacetable
hoặc isSortable
thành true
chỉ nếu bạn có
trường hợp sử dụng và nhu cầu rõ ràng.
Cuối cùng, khi cập nhật giản đồ bằng cách đánh dấu thuộc tính là isSuggestable
,
bạn phải lập chỉ mục lại dữ liệu của mình, việc này khiến việc sử dụng tính năng tự động hoàn thành bị chậm trễ
tài sản đó.
Thay đổi thuộc tính không được phép
Một số thay đổi đối với giản đồ là không được chấp nhận, ngay cả khi bạn lập chỉ mục lại dữ liệu của mình, vì chúng sẽ làm hỏng chỉ mục hoặc tạo ra kết quả tìm kiếm kém chất lượng hoặc không nhất quán. Các bao gồm các thay đổi đối với:
- Loại dữ liệu của tài sản.
- Tên tài sản.
- Chế độ cài đặt
exactMatchWithOperator
. - Chế độ cài đặt
retrievalImportance
.
Tuy nhiên, có cách khắc phục hạn chế này.
Thay đổi giản đồ phức tạp
Để tránh những thay đổi sẽ dẫn đến kết quả tìm kiếm kém chất lượng hoặc kết quả tìm kiếm không chính xác Cloud Search ngăn chặn một số loại thay đổi nhất định trong UpdateSchema các yêu cầu sau khi kho lưu trữ đã được lập chỉ mục. Ví dụ: loại dữ liệu hoặc không thể thay đổi tên của thuộc tính sau khi chúng đã được đặt. Những thay đổi này không thể đạt được thông qua một UpdateSchema yêu cầu, ngay cả khi bạn lập chỉ mục lại dữ liệu của mình.
Trong trường hợp bạn phải thực hiện thay đổi không được phép đối với , bạn thường có thể thực hiện một loạt thay đổi được phép để đạt được cùng một hiệu ứng. Nhìn chung, trước tiên, quá trình này bao gồm di chuyển các tài sản được lập chỉ mục từ một định nghĩa đối tượng cũ sang một đối tượng mới hơn rồi gửi yêu cầu lập chỉ mục chỉ sử dụng thuộc tính mới hơn.
Các bước sau đây cho biết cách thay đổi loại dữ liệu hoặc tên của một tài sản:
- Thêm một thuộc tính mới vào phần định nghĩa đối tượng trong giản đồ. Sử dụng một tên của tài sản mà bạn muốn thay đổi.
- Phát hành UpdateSchema yêu cầu theo định nghĩa mới. Hãy nhớ gửi toàn bộ giản đồ, bao gồm cả tài sản mới và tài sản cũ trong yêu cầu.
Bổ sung chỉ mục từ kho lưu trữ dữ liệu. Để bổ sung vào chỉ mục, hãy gửi tất cả yêu cầu lập chỉ mục bằng cách sử dụng thuộc tính mới, nhưng không phải vì điều này sẽ dẫn đến việc tính hai lần kết quả trùng khớp với truy vấn.
- Trong quá trình lập chỉ mục thay thế, hãy kiểm tra tài sản mới và đặt mặc định thành tài sản cũ để tránh hoạt động không nhất quán.
- Sau khi quá trình chèn lấp hoàn tất, hãy chạy truy vấn kiểm tra để xác minh.
Xoá tài sản cũ. Tạo vấn đề khác UpdateSchema yêu cầu mà không có tên tài sản cũ và ngừng sử dụng tài sản cũ tên trong các yêu cầu lập chỉ mục trong tương lai.
Di chuyển mọi hoạt động sử dụng tài sản cũ sang tài sản mới. Ví dụ: nếu khi thay đổi tên tài sản từ người tạo thành tác giả, bạn phải cập nhật truy vấn của mình để sử dụng tác giả ở vị trí trước đó đã tham chiếu đến người tạo.
Cloud Search lưu giữ bản ghi của mọi thuộc tính hoặc đối tượng đã bị xóa trong 30 ngày để tránh việc sử dụng lại có thể dẫn đến kết quả lập chỉ mục không mong muốn. Trong vòng 30 ngày đó, bạn nên di chuyển khỏi tất cả việc sử dụng những đối tượng hoặc thuộc tính, bao gồm cả việc loại bỏ chúng khỏi các yêu cầu lập chỉ mục trong tương lai. Điều này đảm bảo rằng nếu sau đó bạn quyết định khôi phục tài sản đó hoặc , bạn có thể làm như vậy theo cách duy trì độ chính xác của chỉ mục.
Biết giới hạn về kích thước
Cloud Search đặt ra các giới hạn về kích thước của các đối tượng và giản đồ dữ liệu có cấu trúc. Các giới hạn này là:
- Số lượng đối tượng cấp cao nhất tối đa là 10 đối tượng.
- Độ sâu tối đa của hệ thống phân cấp dữ liệu có cấu trúc là 10 cấp.
- Tổng số trường trong một đối tượng được giới hạn ở mức 1.000, bao gồm số trường gốc cộng với tổng số trong mỗi đối tượng được lồng.
Các bước tiếp theo
Dưới đây là một vài bước tiếp theo bạn có thể thực hiện:
Tạo giao diện tìm kiếm để hãy kiểm tra giản đồ của bạn.
Điều chỉnh giản đồ để cải thiện chất lượng tìm kiếm.
Tìm hiểu cách tận dụng Giản đồ
_dictionaryEntry
để xác định từ đồng nghĩa cho những cụm từ thường dùng trong công ty của bạn. Để sử dụng_dictionaryEntry
giản đồ, tham chiếu đến Định nghĩa từ đồng nghĩa.Tạo trình kết nối.