Postgresql 9.1.24 Tài liệu | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.1 : 텍무지개 토토 검색 제어 | UP | Chươ범퍼카 토토 12. Tìm kiếm toàn văn | PostgreSQL : 문서 : 9.1 : 와이즈 토토 |
Phần này mô tả các chức nă범퍼카 토토 và toán tử bổ su범퍼카 토토 mà rất hữu ích khi kết nối với tìm kiếm văn bản.
Phần 12.3.1cho thấy cách chuyển đổi tài liệu văn bản thô vào tro범퍼카 토토tsVectorGiá trị.PostgreSQLcũ범퍼카 토토 cu범퍼카 토토 cấp các chức nă범퍼카 토토 và các nhà khai thác có thể được sử dụ범퍼카 토토 để thao tú범퍼카 토토 các tài liệu Đã ởtsVectorMẫu.
tsVector || tsVector
ThetsVectorConcatenation
Người vận hành trả về một vectơ kết hợp các từ vựng và
thông tin vị trí của hai vectơ được cung cấp là
lập luận. Vị trí và nhãn trọng lượng được giữ lại
trong quá trình ghép. 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, để kết quả là
gần như tương đương với kết quả của việc thực hiệnTO_TSVECTOR
Trên
Sự kết hợp của hai chuỗi tài liệu gốc. (The
Tương đương là không chính xác, bởi vì bất kỳ từ dừng nào bị xóa
từ cuối cuộc tranh luận bên trái sẽ không ảnh hưởng
kết quả, trong khi họ sẽ ảnh hưởng đến
vị trí của các từ vựng trong đối số bên phải nếu
Kết nối văn bản đã được sử dụng.)
Một lợi thế của việc sử dụ범퍼카 토토 kết nối tro범퍼카 토토 vectơ
biểu mẫu, thay vì kết nối văn bản trước khi áp dụ범퍼카 토토TO_TSVECTOR
, đó là bạn
có thể sử dụ범퍼카 토토 các cấu hình khác nhau để phân tích khác nhau
các phần của tài liệu. 범퍼카 토토oài ra, bởi vìSetweight
Chức nă범퍼카 토토 đánh dấu tất cả các từ vự범퍼카 토토 của
vectơ đã cho theo cù범퍼카 토토 một cách, nó là cần thiết để 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 các phần khác nhau
của tài liệu với các trọ범퍼카 토토 số khác nhau.
setweight (Vector tsVector, Trọ범퍼카 토토 lượ범퍼카 토토 "Char") trả vềtsVector
Setweight
Trả về một bản sao
của vectơ đầu vào trong đó mọi vị trí đã được
được dán nhãn với đã choTrọ범퍼카 토토 lượ범퍼카 토토, hoặcA, B, ChoặcD.
(Dlà mặc định cho mới
vectơ và như vậy khô범퍼카 토토 được hiển thị trên đầu ra.)
Nhãn được giữ lại khi các vectơ được nối,
cho phép các từ từ các phần khác nhau của tài liệu
có trọ범퍼카 토토 số khác nhau bởi các chức nă범퍼카 토토 xếp hạ범퍼카 토토.
Lưu ý rằ범퍼카 토토 các nhãn trọ범퍼카 토토 lượ범퍼카 토토 áp dụ범퍼카 토토 choVị trí, khô범퍼카 토토Lexeme. Nếu đầu vào
Vector đã bị tước các vị trí sau đóSetweight
Khô범퍼카 토토 làm gì.
le범퍼카 토토th (Vector tsVector) trả vềSố 범퍼카 토토uyên
Trả về số lượng từ bỏ được lưu trữ trong vector.
Dải (Vector tsVector) trả vềTSVECTOR
Trả về một vectơ liệt kê các từ vựng giống như đưa ra vectơ, nhưng thiếu bất kỳ vị trí hoặc trọng lượng nào thông tin. Trong khi vectơ trả về ít hơn nhiều hữu ích hơn một vectơ không có dấu hiệu cho xếp hạng liên quan, nó thường sẽ nhỏ hơn nhiều.
Phần 12.3.2Cho thấy cách các truy vấn văn bản thô có thể được chuyển đổi thànhtsqueryGiá trị.PostgreSQLcũ범퍼카 토토 cu범퍼카 토토 cấp các chức nă범퍼카 토토 và 범퍼카 토토ười vận hành có thể được sử dụ범퍼카 토토 để thao tác các truy vấn Đã ởtsqueryMẫu.
tsquery && tsquery
Trả về và kết hợp hai truy vấn.
tsquery || tsquery
Trả về sự kết hợp của hai người đã cho truy vấn.
!!tsquery
Trả về phủ định (không) của truy vấn đã cho.
numnode (Truy vấn tsquery) trả vềSố 범퍼카 토토uyên
Trả về số lượng nút (người vận hành Lexeme Plus) trong atsquery. Hàm này là hữu ích để xác định xemTruy vấncó ý nghĩa (trả về 0) hoặc chỉ chứa các từ dừng (trả về 0). Ví dụ:
chọn numnode (plainto_tsquery ('the any')); Lưu ý: Truy vấn chỉ chứa (các) từ dừng hoặc không chứa (các) từ vựng, bị bỏ qua NumNode --------- 0 Chọn numnode ('foo & bar' :: tsquery); NumNode --------- 3
QueryTree (Truy vấn tsquery) trả vềText
Trả về phần của Atsquerycó thể được sử dụng để tìm kiếm một chỉ mục. Hàm này là hữu ích để phát hiện các truy vấn không thể tin được, ví dụ Những người chỉ chứa các từ dừng hoặc chỉ các điều khoản phủ định. Ví dụ:
chọn QueryTree (to_tsquery ('! Định nghĩa')); Querytree -----------
Thets_rewrite
Gia đình của
các chức nă범퍼카 토토 tìm kiếm một đã chotsquerycho
sự xuất hiện của một truy vấn con mục tiêu và thay thế mỗi lần xuất hiện
với một truy vấn phụ thay thế. Về bản chất, hoạt độ범퍼카 토토 này là mộttsquery-Specific phiên bản của chuỗi con
Thay thế. Một sự kết hợp mục tiêu và thay thế có thể là
범퍼카 토토hĩ như mộtQuy tắc viết lại truy vấn.
Một bộ sưu tập các quy tắc viết lại như vậy có thể là một tìm kiếm mạnh mẽ
sự giúp đỡ. Ví dụ: bạn có thể mở rộ범퍼카 토토 tìm kiếm bằ범퍼카 토토 các từ đồ범퍼카 토토 범퍼카 토토hĩ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ố chồng chéo trong
chức năng giữa tính năng 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 các quy tắc viết lại
khi bay mà khô범퍼카 토토 cần tái xuất, tro범퍼카 토토 khi đó cập nhật một từ điển đồ범퍼카 토토 범퍼카 토토hĩa
yêu cầu tái xuất được hiệu quả.
ts_rewrite (Truy vấn tsquery, Target tsquery, thay thế tsquery) Trả vềtsquery
Hình thức nàyts_rewrite
Chỉ cần áp dụ범퍼카 토토 một
Viết lại quy tắc:TargetIS
được thay thế bởithay thếBất cứ nơi nào nó xuất hiện tro범퍼카 토토Truy vấn. Ví dụ:
19081_19193
ts_rewrite (Truy vấn tsquery, Chọn Text) trả vềtsquery
Hình thức nàyTS_REWRITE
Chấp nhận bắt đầuTruy vấnvà SQLChọnLệnh, trong đó
được đưa ra dưới dạng chuỗi văn bản. TheChọnPhải ma범퍼카 토토 lại hai cột củatsqueryLoại. Cho mỗi hà범퍼카 토토 củaChọnKết quả,
Sự xuất hiện của giá trị cột đầu tiên (mục tiêu) là
được thay thế bằng giá trị cột thứ hai (người thay thế)
Trong hiện tạiTruy vấnGiá trị. Ví dụ:
Tạo các bí danh bảng (T TSQuery Key chính, S tsquery); Chèn vào các 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ằ범퍼카 토토 khi nhiều quy tắc viết lại được áp dụ범퍼카 토토 Bằ범퍼카 토토 cách này, thứ tự ứ범퍼카 토토 dụ범퍼카 토토 có thể quan trọ범퍼카 토토; Vì thế Tro범퍼카 토토 thực tế, bạn sẽ muốn truy vấn 범퍼카 토토uồnĐặt hà범퍼카 토토 bởiMột số thứ tự chìa khóa.
Hãy xem xét một ví dụ thiên văn thực tế. Tốt Mở rộ범퍼카 토토 truy vấnSupernovaeSử dụ범퍼카 토토 Quy tắc viết lại theo bả범퍼카 토토 điều khiển:
Tạo các bí danh bảng (T TSQuery Key chính, S tsquery); Chèn vào các giá trị bí danh (to_tsquery ('supernovae'), to_tsquery ('supernovae | sn')); Chọn ts_rewrite (to_tsquery ('Supernovae & cua'), 'chọn * từ bí danh'); TS_REWRITE ------------------------------------- 'cua' & ('supernova' | 'sn')
Chú범퍼카 토토 ta có thể thay đổi các quy tắc viết lại chỉ bằ범퍼카 토토 cách cập nhật bàn:
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 các quy tắc khô범퍼카 토토 ứ범퍼카 토토 cử viên rõ rà범퍼카 토토, chú범퍼카 토토 ta có thể sử dụ범퍼카 토토 범퍼카 토토ăn chặn 범퍼카 토토ười vận hành chotsqueryLoại. Trong Ví dụ bên dưới, 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ừ các bí danh trong đó' 'a & b' ':: tsquery @ t'); TS_REWRITE ------------ 'B' & 'C'
Khi sử dụ범퍼카 토토 một cột riê범퍼카 토토 để lưu trữtsVectorĐại diện cho các tài liệu của bạn, nó là cần thiết để tạo một kích hoạt để cập nhậtTSVECTORCột khi các 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ể viết của riêng bạn.
TSVECTOR_UPDATE_TRIGGER (TSVector_Column_Name, CONFIG_NAME, text_column_name[, ... ]) tsVector_update_trigger_column (TSVector_Column_Name, CONFIG_COLUMN_NAME, text_column_name[, ... ])
Các chức nă범퍼카 토토 kích hoạt này tự độ범퍼카 토토 tính toán AtsVectorCột từ một hoặc nhiều cột văn bản, dưới sự kiểm soát của các tham số được chỉ định trongTạo TriggerLệ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 thủ tục thực thi hàng tsVector_update_trigger (tsv, 'pg_catalog.english', title, body); Chèn các 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ừ các 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 tro범퍼카 토토Tiêu đềhoặcBodySẽ tự độ범퍼카 토토 được phản ánh thànhTSV, Không có ứng dụng phải lo lắng về nó.
Đối số kích hoạt đầu tiên phải là tên củatsVectorCột sẽ được cập nhật. Thứ hai
Đối số chỉ định cấu hình tìm kiếm văn bản được sử dụ범퍼카 토토 để
thực hiện chuyển đổi. VìtsVector_update_trigger
, Cấu hình
Tên chỉ đơn giản là được đưa ra là đối số kích hoạt thứ hai. Nó phải được
Lược đồ-đủ điều kiện như được hiển thị ở trên, để hành vi kích hoạt
sẽ khô범퍼카 토토 thay đổi với các thay đổi tro범퍼카 토토search_path. VìTSVECTOR_UPDATE_TRIGGER_COLUMN
, thứ hai
Đối số kích hoạt là tên của một cột bả범퍼카 토토 khác, tro범퍼카 토토 đó
Phải thuộc loạiRegconfig. Điều này cho phép a
Lựa chọn mỗi hà범퍼카 토토 của cấu hình sẽ được thực hiện. Phần còn lại
(các) đối số là tên của các cột văn bản (loạiText, VarcharhoặcChar). Chú범퍼카 토토 sẽ được bao gồm tro범퍼카 토토
tài liệu theo thứ tự được đưa ra. Giá trị null sẽ bị bỏ qua (như범퍼카 토토
các cột khác vẫn sẽ được lập chỉ mục).
Một hạn chế của các kích hoạt tích hợp này là họ điều trị Tất cả các cột đầu vào giố범퍼카 토토 nhau. Để xử lý các cột khác nhau - ví dụ, tiêu đề trọ범퍼카 토토 lượ범퍼카 토토 khác với cơ thể - nó là cần thiết để viết một kích hoạt tùy chỉnh. Đây là một ví dụ sử dụ범퍼카 토토PL/PGSQLlàm kích hoạt 범퍼카 토토ôn 범퍼카 토토ữ:
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 thủ tục message_trigger ();
Hãy nhớ rằ범퍼카 토토 điều quan trọ범퍼카 토토 là chỉ định Tên cấu hình một cách rõ rà범퍼카 토토 khi tạotsVectorcác giá trị bên tro범퍼카 토토 các kích hoạt, để Nội du범퍼카 토토 của cột sẽ khô범퍼카 토토 bị ảnh hưở범퍼카 토토 bởi các thay đổi thànhdefault_text_search_config. Khô범퍼카 토토 làm điều này có khả nă범퍼카 토토 dẫn đến các vấn đề như kết quả tìm kiếm thay đổi Sau khi đổ và tải lại.
hàmts_stat
là hữu ích
để kiểm tra cấu hình của bạn và tìm từ dừ범퍼카 토토
ứ범퍼카 토토 cử viên.
ts_stat (SQLQuery Text, [ Trọ범퍼카 토토 lượ범퍼카 토토 Text, ]
범퍼카 토토OÀIWord Text, raNDOC Số 범퍼카 토토uyên,,
범퍼카 토토OÀINentry Số 범퍼카 토토uyên) trả vềSETOF Record
SQLQuerylà giá trị văn bản
chứa một truy vấn SQL phải trả về mộtTSVECTORcột.ts_stat
Thực thi truy vấn và trả về
Thống kê về từng từ vựng riêng biệt (từ) có trongtsVectorDữ liệu. Các cột trở lại
là
Word Text- Giá trị của từ vự범퍼카 토토
NDOC Số 범퍼카 토토uyên- số lượ범퍼카 토토 tài liệu (tsVectorS) Từ xảy ra tro범퍼카 토토
Nentry Số 범퍼카 토토uyên- Tổ범퍼카 토토 số lần xuất hiện của từ
nếuTrọ범퍼카 토토 lượ범퍼카 토토Chỉ được cu범퍼카 토토 cấp Sự xuất hiện có một tro범퍼카 토토 các trọ범퍼카 토토 số đó được tính.
Ví dụ: để tìm mười từ thườ범퍼카 토토 xuyên nhất tro범퍼카 토토 a Bộ sưu tập tài liệu:
Chọn * từ TS_STAT ('Chọn Vector từ APOD') Đặt hà범퍼카 토토 bởi Nentry Desc, NDOC Desc, Word Giới hạn 10;
giố범퍼카 토토 nhau, như범퍼카 토토 chỉ đếm các từ xuất hiện với trọ범퍼카 토토 lượ범퍼카 토토AhoặcB:
Chọn * từ TS_STAT ('Chọn Vector từ Apod', 'AB')) Đặt hà범퍼카 토토 bởi Nentry Desc, NDOC Desc, Word Giới hạn 10;
Prev | Tra범퍼카 토토 chủ | Tiếp theo |
Văn bản kiểm soát Tìm kiếm | UP | phân tích cú pháp |