Postgresql 9.2.24 Tài liệu | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.2 : 텍토토 핫 검색 제어 | UP | Chươ토토 결과 12. Tìm kiếm toàn văn | PostgreSQL : 문서 : 9.2 : 스포츠 토토 베트맨 |
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 |