PostgreSQL: soi kèo bóng đá | |||
---|---|---|---|
prev | UP | Chương 12. Tìm kiếm toàn văn | NEXT |
Phần này mô tả kèo chấp bóng đá hôm nay 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 chấp bóng đá hôm nay tài liệu văn bản thô có thể được chuyển đổi thànhtsVectorGiá trị.PostgreSQLCũng cung cấp kèo chấp bóng đá hôm nay chức năng và toán tử có thể được sử dụng để thao tác kèo chấp bóng đá hôm nay tài liệu đã có trongTSVECTORMẫu.
ThetsVectorToán tử Concatenation trả về một vectơ kết hợp kèo chấp bóng đá hôm nay 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.TO_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 chấp bóng đá hôm nay cấu hình khác nhau để phân tích kèo chấp bóng đá hôm nay 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 chấp bóng đá hôm nay 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 chấp bóng đá hôm nay phần khác nhau của tài liệu với kèo chấp bóng đá hôm nay trọng số khác nhau.
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, ChoặcD. (Dlà mặc định cho kèo chấp bóng đá hôm nay vectơ mới và do đó không được hiển thị trên đầu ra.) kèo chấp bóng đá hôm nay nhãn này được giữ lại khi kèo chấp bóng đá hôm nay vectơ được nối, cho phép kèo chấp bóng đá hôm nay từ từ kèo chấp bóng đá hôm nay phần khác nhau của tài liệu được tính theo kèo chấp bóng đá hôm nay hàm xếp hạng.
Lưu ý rằng kèo chấp bóng đá hôm nay nhãn trọng lượng áp dụng choVị trí, khôngLexeme. Nếu vectơ đầu vào đã bị tước kèo chấp bóng đá hôm nay vị trí thìSetweight
Không làm gì.
Trả về số lượng từ vựng được lưu trữ trong vectơ.
Trả về một vectơ liệt kê kèo chấp bóng đá hôm nay 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. Mặc dù vectơ được trả về ít hữu ích hơn nhiều so với một vectơ không có dấu cho xếp hạng liên quan, nhưng nó thường sẽ nhỏ hơn nhiều.
Phần 12.3.2Cho thấy cách kèo chấp bóng đá hôm nay truy vấn văn bản thô có thể được chuyển đổi thànhtsqueryGiá trị.PostgreSQLCũng cung cấp kèo chấp bóng đá hôm nay chức năng và toán tử có thể được sử dụng để thao tác kèo chấp bóng đá hôm nay truy vấn đã có trongtsqueryMẫu.
Trả về và kết hợp hai truy vấn đã cho.
Trả về sự kết hợp của hai truy vấn đã cho.
Trả về phủ định (không) của truy vấn đã cho.
Trả về số lượng nút (toán tử cộng với Lexeme) trong Atsquery. Chức kèo chấp bóng đá hôm nay này hữu ích để xác định xemTruy vấncó ý nghĩa (trả về 0) hoặc chỉ chứa kèo chấp bóng đá hôm nay từ dừng (trả về 0). Ví dụ:
chọn numnode (plainto_tsquery ('bất kỳ'));
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 rất hữu ích để phát hiện kèo chấp bóng đá hôm nay truy vấn không thể vượt qua, ví dụ như kèo chấp bóng đá hôm nay truy vấn chỉ có chứa kèo chấp bóng đá hôm nay từ dừng hoặc chỉ kèo chấp bóng đá hôm nay thuật ngữ bị phủ định.
chọn QueryTree (to_tsquery ('! Định nghĩa'));
Thets_rewrite
Gia đình chức kèo chấp bóng đá hôm nay Tìm kiếm một đã chotsqueryĐối với kèo chấp bóng đá hôm nay 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 trình điều khiển thay thế. Về bản chất, hoạt động này là mộttsquery-Pecific phiên bản thay thế chuỗi 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 chấp bóng đá hôm nay quy tắc viết lại như vậy có thể là một hỗ trợ tìm kiếm mạnh mẽ.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 chấp bóng đá hôm nay giữa tính kèo chấp bóng đá hôm nay 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 chấp bóng đá hôm nay quy tắc viết lại trên đường bay mà không cần tái hiện
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ụ:
17396_17506
Hình thức này củats_rewrite
Chấp nhận bắt đầuTruy vấnvà SQLChọnLệnh được đưa ra dưới dạng chuỗi văn bản. TheChọnPhải mang lại hai cộttsqueryLoại. Cho mỗi hàng củaChọnKế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ấnGiá trị. Ví dụ:
18327_18532
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ởiMột số khóa đặt hàng.
Hãy xem xét một ví dụ thiên văn ngoài đời thực. Chúng tôi sẽ mở rộng truy vấnSupernovaeSử dụng kèo chấp bóng đá hôm nay quy tắc viết lại theo bảng:
18938_19266
Chúng ta có thể thay đổi kèo chấp bóng đá hôm nay quy tắc viết lại chỉ bằng cách cập nhật bảng:
Cập nhật bí danh
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 chấp bóng đá hôm nay quy tắc không ứng cử viên rõ ràng, chúng ta có thể sử dụng kèo chấp bóng đá hôm nay toán tử ngăn chặn chotsqueryLoạ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,
Khi sử dụng một cột riêng để lưu trữTSVECTORĐại diện cho kèo chấp bóng đá hôm nay tài liệu của bạn, cần phải tạo một kích hoạt để cập nhậttsVectorCột Khi kèo chấp bóng đá hôm nay 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_Column_Name, config_column_name, text_column_name[, ...])
kèo chấp bóng đá hôm nay chức năng kích hoạt này tự động 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 kèo chấp bóng đá hôm nay 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 (
Đã tạo trình kích hoạt này, bất kỳ thay đổi nào trongTiêu đềhoặcBodysẽ 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ủaTSVectorCộ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.TSVECTOR_UPDATE_TRIGGER
, tên cấu hình chỉ được đưa ra dưới dạng đố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 chấp bóng đá hôm nay 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.Text, VarcharhoặcChar). Chúng sẽ được bao gồm trong tài liệu theo thứ tự được đưa ra.
Một giới hạn của kèo chấp bóng đá hôm nay kích hoạt tích hợp này là chúng đối xử với tất cả kèo chấp bóng đá hôm nay cột đầu vào. Để xử lý kèo chấp bóng đá hôm nay 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.PL/PGSQLlàm ngôn ngữ kích hoạt:
Tạo hàm message_trigger () trả về kích hoạt là $$
Hãy nhớ rằng điều quan trọng là chỉ định tên cấu hình rõ ràng khi tạotsVectorGiá trị bên trong kèo chấp bóng đá hôm nay kích hoạt, để nội dung của cột sẽ không bị ảnh hưởng bởi kèo chấp bóng đá hôm nay 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 chấp bóng đá hôm nay vấn đề như kết quả tìm kiếm thay đổi sau khi kết xuất và tải lại.
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, ]Word Text, raNDOC Số nguyên,,Nentry Số nguyên) Trả vềSetof Record
SQLQuerylà giá trị văn bản chứa truy vấn SQL phải trả về mộtTSVectorcộ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ó trongtsVectorDữ liệu. kèo chấp bóng đá hôm nay 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 (tsVectorS) 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ỉ xảy ra có một trong kèo chấp bóng đá hôm nay trọng số đó được tính.
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 vectơ từ apod')
giống nhau, nhưng chỉ đếm kèo chấp bóng đá hôm nay từ xuất hiện với trọng lượngAhoặcB:
Chọn * từ ts_stat ('chọn vectơ từ apod', 'ab'))