Phần này mô tả kèo bóng đá hôm nay và ngày mai chức năng và toán tử bổ sung hữu ích liên quan đến tìm kiếm văn bản.
Phần 12.3.1Cho thấy cách kèo bóng đá hôm nay và ngày mai tài liệu văn bản thô có thể được chuyển đổi thànhtsVector
Giá trị.PostgreSQLCũng cung cấp kèo bóng đá hôm nay và ngày mai chức năng và toán tử có thể được sử dụng để thao tác kèo bóng đá hôm nay và ngày mai tài liệu đã có trongtsVector
Mẫu.
tsVector
||tsVector
TheTSVECTOR
Toán tử kết hợp trả về một vectơ kết hợp kèo bóng đá hôm nay và ngày mai từ vựng và thông tin vị trí của hai vectơ được đưa ra dưới dạng đối số. Vị trí và nhãn trọng lượng được giữ lại trong quá trình nối. kèo bóng đá hôm nay và ngày mai vị trí xuất hiện trong vectơ bên phải được bù bởi vị trí lớn nhất được đề cập trong vectơ bên trái, do đó kết quả gần như tương đương với kết quả của việc thực hiệnTO_TSVECTOR
Về sự kết hợp của hai chuỗi tài liệu gốc. .
Một lợi thế của việc sử dụng kết nối ở dạng vectơ, thay vì kết nối văn bản trước khi áp dụngTO_TSVECTOR
, là bạn có thể sử dụng kèo bóng đá hôm nay và ngày mai cấu hình khác nhau để phân tích kèo bóng đá hôm nay và ngày mai phần khác nhau của tài liệu. Ngoài ra, bởi vìSetweight
Chức năng đánh dấu tất cả kèo bóng đá hôm nay và ngày mai từ vựng của vectơ đã cho theo cùng một cách, cần phải phân tích văn bản và làmSetweight
Trước khi kết nối nếu bạn muốn dán nhãn kèo bóng đá hôm nay và ngày mai phần khác nhau của tài liệu với kèo bóng đá hôm nay và ngày mai trọng số khác nhau.
setweight (Vector
tsVector
, Trọng lượng
"Char"
) trả vềtsVector
Setweight
Trả về một bản sao của vectơ đầu vào trong đó mọi vị trí đã được dán nhãn với đã choTrọng lượng
, hoặcA
, B
, C
hoặcD
. (D
là mặc định cho kèo bóng đá hôm nay và ngày mai vectơ mới và do đó không được hiển thị trên đầu ra.) kèo bóng đá hôm nay và ngày mai nhãn này được giữ lại khi kèo bóng đá hôm nay và ngày mai vectơ được nối, cho phép kèo bóng đá hôm nay và ngày mai từ từ kèo bóng đá hôm nay và ngày mai phần khác nhau của tài liệu được tính theo kèo bóng đá hôm nay và ngày mai hàm xếp hạng.
Lưu ý rằng kèo bóng đá hôm nay và ngày mai nhãn trọng lượng áp dụng choVị trí, khôngLexeme. Nếu vectơ đầu vào đã bị tước kèo bóng đá hôm nay và ngày mai vị trí thìSetweight
Không làm gì.
length (Vector
tsVector
) trả vềSố nguyên
Trả về số lượng từ vựng được lưu trữ trong vectơ.
Dải (Vector
tsVector
) trả vềtsVector
Trả về một vectơ liệt kê kèo bóng đá hôm nay và ngày mai từ vựng giống như vectơ đã cho, nhưng thiếu bất kỳ thông tin vị trí hoặc trọng lượng nào. Kết quả thường nhỏ hơn nhiều so với một vectơ không có dấu, nhưng nó cũng ít hữu ích hơn. Xếp hạng mức độ liên quan không hoạt động tốt trên kèo bóng đá hôm nay và ngày mai vectơ bị tước như những vectơ không có dấu. Ngoài ra,<-
(tiếp theo là)tsquery
Nhà điều hành sẽ không bao giờ khớp với đầu vào bị tước, vì nó không thể xác định khoảng cách giữa kèo bóng đá hôm nay và ngày mai lần xuất hiện từ vựng.
Danh sách đầy đủ củatsVector
kèo bóng đá hôm nay và ngày mai hàm liên quan đến có sẵn trongBảng 9.43.
Phần 12.3.2Cho thấy cách kèo bóng đá hôm nay và ngày mai truy vấn văn bản thô có thể được chuyển đổi thànhtsquery
Giá trị.PostgreSQLCũng cung cấp kèo bóng đá hôm nay và ngày mai chức năng và toán tử có thể được sử dụng để thao tác kèo bóng đá hôm nay và ngày mai truy vấn đã có trongtsquery
Mẫu.
tsquery
&&tsquery
Trả về và kết hợp hai truy vấn đã cho.
tsquery
||tsquery
Trả về sự kết hợp của hai truy vấn đã cho.
!!tsquery
Trả về phủ định (không) của truy vấn đã cho.
tsquery
<-tsquery
Trả về một truy vấn tìm kiếm một trận đấu với truy vấn đã cho đầu tiên ngay sau đó là một trận đấu với truy vấn đã cho thứ hai, sử dụng<-
(tiếp theo là)tsquery
toán tử. Ví dụ:
Chọn to_tsquery ('fat') <- to_tsquery ('cat | rat'); ? Cột? -------------------------------- 'béo' <- ('mèo' | 'chuột')
tsquery_phrase (Query1
tsquery
, query2
tsquery
[,Khoảng cách
Số nguyên
]) trả vềtsquery
18044_18184Khoảng cách
Lexeme, sử dụng<
n
tsquery
Nhà điều hành. Ví dụ:
Chọn tsquery_phrase (to_tsquery ('fat'), to_tsquery ('cat'), 10); tsquery_phrase ------------------ 'Fat' <10 'Cat'
numnode (Truy vấn
tsquery
) trả vềSố nguyên
Trả về số lượng nút (toán tử cộng với Lexeme) trong Atsquery
. Chức kèo bóng đá hôm nay và ngày mai này hữu ích để xác định xemTruy vấn
có ý nghĩa (trả về 0) hoặc chỉ chứa kèo bóng đá hôm nay và ngày mai từ dừng (trả về 0). Ví dụ:
chọn numnode (plainto_tsquery ('bất kỳ')); Lưu ý: Truy vấn chỉ chứa (kèo bóng đá hôm nay và ngày mai) từ dừng hoặc không chứa (kèo bóng đá hôm nay và ngày mai) từ vựng, bị bỏ qua NumNode --------- 0 Chọn numnode ('foo & bar' :: tsquery); NumNode --------- 3
Querytree (Truy vấn
tsquery
) trở lạiText
Trả về phần của Atsquery
có thể được sử dụng để tìm kiếm một chỉ mục. Hàm này rất hữu ích để phát hiện kèo bóng đá hôm nay và ngày mai truy vấn không thể vượt qua, ví dụ như kèo bóng đá hôm nay và ngày mai truy vấn chỉ có chứa kèo bóng đá hôm nay và ngày mai từ dừng hoặc chỉ kèo bóng đá hôm nay và ngày mai thuật ngữ bị phủ định. Ví dụ:
chọn QueryTree (to_tsquery ('xác định')); Querytree ----------- 'định nghĩa' Chọn QueryTree (to_tsquery ('! Đã xác định')); Querytree ----------- T
TheTS_REWRITE
Gia đình chức kèo bóng đá hôm nay và ngày mai Tìm kiếm một đã chotsquery
Đối với kèo bóng đá hôm nay và ngày mai trường hợp xuất hiện của một truy vấn mục tiêu và thay thế mỗi lần xuất hiện bằng một truy vấn con thay thế. Về bản chất, hoạt động này là mộttsquery
-Pecific phiên bản thay thế con. Một kết hợp mục tiêu và thay thế có thể được coi làQuy tắc viết lại truy vấn. Một bộ sưu tập kèo bóng đá hôm nay và ngày mai quy tắc viết lại như vậy có thể là một hỗ trợ tìm kiếm mạnh mẽ. Ví dụ: bạn có thể mở rộng tìm kiếm bằng kèo bóng đá hôm nay và ngày mai từ đồng nghĩa (ví dụ:New York
, Big Apple
, NYC
, Gotham
) hoặc thu hẹp tìm kiếm để hướng người dùng đến một số chủ đề nóng. Có một số sự chồng chéo về chức kèo bóng đá hôm nay và ngày mai giữa tính kèo bóng đá hôm nay và ngày mai này và từ điển từ điển (Phần 12.6.4). Tuy nhiên, bạn có thể sửa đổi một tập hợp kèo bóng đá hôm nay và ngày mai quy tắc viết lại trên đường bay mà không cần tái hiện
ts_rewrite (Truy vấn
tsquery
, Target
tsquery
, Thay thế
tsquery
) trả vềtsquery
Hình thức này củats_rewrite
Chỉ cần áp dụng một quy tắc viết lại:Target
được thay thế bằngthay thế
Bất cứ nơi nào nó xuất hiện trongTruy vấn
. Ví dụ:
22516_22628
ts_rewrite (Truy vấn
tsquery
, Chọn
Text
) Trả vềtsquery
Hình thức này củaTS_REWRITE
Chấp nhận bắt đầuTruy vấn
và SQLChọn
Lệnh được đưa ra dưới dạng chuỗi văn bản. TheChọn
Phải mang lại hai cộttsquery
Loại. Cho mỗi hàng củaChọn
Kết quả, sự xuất hiện của giá trị cột thứ nhất (mục tiêu) được thay thế bằng giá trị cột thứ hai (thay thế) trong hiện tạiTruy vấn
Giá trị. Ví dụ:
Tạo kèo bóng đá hôm nay và ngày mai bí danh bảng (T TSQuery Key chính, S tsquery); Chèn vào kèo bóng đá hôm nay và ngày mai giá trị bí danh ('a', 'c'); Chọn TS_REWRITE ('A & B' :: TSQuery, 'Chọn t, s từ bí danh'); TS_REWRITE ------------ 'B' & 'C'
Lưu ý rằng khi nhiều quy tắc viết lại được áp dụng theo cách này, thứ tự ứng dụng có thể quan trọng; Vì vậy, trong thực tế, bạn sẽ muốn truy vấn nguồnđặt hàng bởi
Một số khóa đặt hàng.
Hãy xem xét một ví dụ thiên văn thực tế. Chúng tôi sẽ mở rộng truy vấnSupernovae
Sử dụng kèo bóng đá hôm nay và ngày mai quy tắc viết lại theo hướng bảng:
24290_24608
Chúng ta có thể thay đổi kèo bóng đá hôm nay và ngày mai quy tắc viết lại chỉ bằng cách cập nhật bảng:
Cập nhật bí danh Đặt S = TO_TSQUERY ('Supernovae | Sn &! Nebulae')) Trong đó t = to_tsquery ('supernovae'); Chọn ts_rewrite (to_tsquery ('Supernovae & cua'), 'chọn * từ bí danh'); TS_REWRITE ------------------------------------------------- 'cua' & ('supernova' | 'sn' &! 'nebula')
Viết lại có thể chậm khi có nhiều quy tắc viết lại, vì nó kiểm tra mọi quy tắc cho một trận đấu có thể. Để lọc ra kèo bóng đá hôm nay và ngày mai quy tắc không ứng cử viên rõ ràng, chúng ta có thể sử dụng kèo bóng đá hôm nay và ngày mai toán tử ngăn chặn chotsquery
Loại. Trong ví dụ dưới đây, chúng tôi chỉ chọn những quy tắc có thể khớp với truy vấn ban đầu:
Chọn TS_REWRITE ('A & B' :: Tsquery, 'Chọn t, s từ kèo bóng đá hôm nay và ngày mai bí danh trong đó' 'a & b' ':: tsquery @ t'); TS_REWRITE ------------ 'B' & 'C'
Phương pháp được mô tả trong phần này đã bị lỗi thời bởi việc sử dụng kèo bóng đá hôm nay và ngày mai cột được tạo được lưu trữ, như được mô tả trongPhần 12.2.2.
Khi sử dụng một cột riêng để lưu trữtsVector
Đại diện cho kèo bóng đá hôm nay và ngày mai tài liệu của bạn, cần phải tạo một kích hoạt để cập nhậttsVector
Cột Khi kèo bóng đá hôm nay và ngày mai cột nội dung tài liệu thay đổi. Hai chức năng kích hoạt tích hợp có sẵn cho việc này hoặc bạn có thể tự viết.
tsVector_update_trigger (TSVector_Column_Name
,CONFIG_NAME
,text_column_name
[, ...]) tsVector_update_trigger_column (TSVector_Column_Name
,config_column_name
,text_column_name
[, ...])
kèo bóng đá hôm nay và ngày mai chức năng kích hoạt này tự động tính toán AtsVector
Cột từ một hoặc nhiều cột văn bản, dưới sự kiểm soát của kèo bóng đá hôm nay và ngày mai tham số được chỉ định trongTạo Trigger
Lệnh. Một ví dụ về việc sử dụng của họ là:
Tạo tin nhắn bảng ( văn bản tiêu đề, văn bản cơ thể, TSV TSVECTOR ); Tạo Trigger TSVectorUpdate trước khi chèn hoặc cập nhật Trên tin nhắn cho mỗi hàng chức năng thực thi tsVector_update_trigger (tsv, 'pg_catalog.english', title, body); Chèn kèo bóng đá hôm nay và ngày mai giá trị tin nhắn ('Tiêu đề ở đây', 'Văn bản cơ thể ở đây'); Chọn * từ tin nhắn; Tiêu đề | cơ thể | TSV ------------+---------------------------+---------------------------------------------- tiêu đề ở đây | Văn bản cơ thể ở đây | 'Bodi': 4 'Văn bản': 5 'Titl': 1 Chọn tiêu đề, cơ thể từ kèo bóng đá hôm nay và ngày mai tin nhắn trong đó tsv @@ to_tsquery ('Tiêu đề & Body'); Tiêu đề | thân hình ------------+--------------------------- tiêu đề ở đây | văn bản cơ thể ở đây
Đã tạo trình kích hoạt này, bất kỳ thay đổi nào trongTiêu đề
hoặcBody
Sẽ tự động được phản ánh thànhTSV
, mà không cần phải lo lắng về nó.
Đối số kích hoạt đầu tiên phải là tên củatsVector
Cột sẽ được cập nhật. Đối số thứ hai chỉ định cấu hình tìm kiếm văn bản được sử dụng để thực hiện chuyển đổi. VìtsVector_update_trigger
, tên cấu hình chỉ đơn giản là đối số kích hoạt thứ hai. Nó phải được định mức lược đồ như được hiển thị ở trên, do đó hành vi kích hoạt sẽ không thay đổi với kèo bóng đá hôm nay và ngày mai thay đổi trongsearch_path
. VìtsVector_update_trigger_column
, Đối số kích hoạt thứ hai là tên của một cột bảng khác, phải thuộc loạiRegConfig
. Điều này cho phép một lựa chọn cấu hình trên mỗi hàng được thực hiện. (kèo bóng đá hôm nay và ngày mai) đối số còn lại là tên của kèo bóng đá hôm nay và ngày mai cột văn bản (loạiText
, Varchar
hoặcChar
). Chúng sẽ được bao gồm trong tài liệu theo thứ tự được đưa ra. kèo bóng đá hôm nay và ngày mai giá trị null sẽ bị bỏ qua (nhưng kèo bóng đá hôm nay và ngày mai cột khác vẫn sẽ được lập chỉ mục).
Một hạn chế của kèo bóng đá hôm nay và ngày mai kích hoạt tích hợp này là chúng đối xử với tất cả kèo bóng đá hôm nay và ngày mai cột đầu vào. Để xử lý kèo bóng đá hôm nay và ngày mai cột khác nhau - ví dụ, tiêu đề trọng lượng khác với cơ thể - cần phải viết một kích hoạt tùy chỉnh. Đây là một ví dụ sử dụngPL/PGSQLlàm ngôn ngữ kích hoạt:
Tạo hàm message_trigger () trả về kích hoạt dưới dạng $$ bắt đầu MỚI.TSV: = set weight (to_tsVector ('pg_catalog.english', hợp tác (new.title, '')), 'a') || set weight (to_tsVector ('pg_catalog.english', hợp tác (new.body, '')), 'd'); trả lại mới; kết thúc $$ Ngôn ngữ plpgsql; Tạo Trigger TSVectorUpdate trước khi chèn hoặc cập nhật Trên tin nhắn cho mỗi hàng thực thi hàm message_trigger ();
Hãy nhớ rằng điều quan trọng là chỉ định tên cấu hình một cách rõ ràng khi tạoTSVECTOR
Giá trị bên trong kèo bóng đá hôm nay và ngày mai kích hoạt, để nội dung của cột sẽ không bị ảnh hưởng bởi kèo bóng đá hôm nay và ngày mai thay đổi thànhDefault_Text_search_config
. Việc không làm điều này có khả năng dẫn đến kèo bóng đá hôm nay và ngày mai vấn đề như kết quả tìm kiếm thay đổi sau khi kết xuất và khôi phục.
hàmts_stat
rất hữu ích cho việc kiểm tra cấu hình của bạn và tìm ứng viên từ dừng.
ts_stat (SQLQuery
Text
, [Trọng lượng
Text
, ] NGOÀIWord
Text
, OUTndoc
Số nguyên
,, NGOÀINentry
Số nguyên
) trả vềSetof Record
SQLQuery
là giá trị văn bản chứa truy vấn SQL phải trả về mộttsVector
cột.ts_stat
Thực thi truy vấn và trả về số liệu thống kê về từng từ vựng riêng biệt (từ) có trongTSVECTOR
Dữ liệu. kèo bóng đá hôm nay và ngày mai cột được trả về là
Word
Text
- Giá trị của từ vựng
NDOC
Số nguyên
- Số lượng tài liệu (tsVector
S) Từ xảy ra trong
Nentry
Số nguyên
- Tổng số lần xuất hiện của từ
nếuTrọng lượng
được cung cấp, chỉ có một trong những trọng số đó được kèo bóng đá hôm nay và ngày mai.
Ví dụ: để tìm mười từ thường xuyên nhất trong bộ sưu tập tài liệu:
Chọn * từ TS_STAT ('Chọn Vector từ APOD') Đặt hàng bởi Nentry Desc, NDOC Desc, Word Giới hạn 10;
giống nhau, nhưng chỉ đếm kèo bóng đá hôm nay và ngày mai từ xuất hiện với trọng lượngA
hoặcB
:
Chọn * từ ts_stat ('chọn vectơ từ apod', 'ab')) Đặt hàng bởi Nentry Desc, NDOC Desc, Word Giới hạn 10;
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính kèo bóng đá hôm nay và ngày mai cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.