Phiên cách đọc kèo bóng đá được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên cách đọc kèo bóng đá phát triển:18 / Devel
Phiên cách đọc kèo bóng đá không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
cách đọc kèo bóng đá này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên cách đọc kèo bóng đá hoặc một trong các phiên cách đọc kèo bóng đá được hỗ trợ khác được liệt kê ở trên thay thế.

12.3. Kiểm soát tìm kiếm văn cách đọc kèo bóng đá

Để thực hiện cách đọc kèo bóng đá toàn văn, phải có một chức năng để tạo mộttsVectorTừ một cách đọc kèo bóng đá và mộttsqueryTừ truy vấn người dùng. Ngoài ra, chúng ta cần trả lại kết quả theo thứ tự hữu ích, vì vậy chúng ta cần một chức năng so sánh các cách đọc kèo bóng đá liên quan đến mức độ liên quan của chúng với truy vấn.PostgreSQLCung cấp hỗ trợ cho tất cả các chức năng này.

12.3.1. cách đọc kèo bóng đá phân tích cú pháp

PostgreSQLcung cấp chức năngto_tsVectorĐể chuyển đổi cách đọc kèo bóng đá thànhtsVectorKiểu dữ cách đọc kèo bóng đá.

to_tsVector ([ config Regconfig, ]Document Text) Trả vềtsVector

to_tsVector10790_10877tsVectortrong đó liệt kê các từ vựng cùng với vị trí của chúng trong cách đọc kèo bóng đá. cách đọc kèo bóng đá được xử lý theo cấu hình tìm kiếm văn bản được chỉ định hoặc mặc định.

chọn to_tsvector ('tiếng Anh', 'một con mèo béo ngồi trên thảm - nó đã ăn một con chuột béo');

Trong ví dụ trên, chúng ta thấy rằng kết quảtsVectorkhông chứa các từA, trênhoặcIT, từRATStrở thànhRATvà Dấu chấm câu-đã bị bỏ qua.

Theto_tsVectorchức năng gọi nội bộ gọi trình phân tích cú pháp chia văn bản cách đọc kèo bóng đá vào mã thông báo và gán một loại cho mỗi mã thông báo. Đối với mỗi mã thông báo, một danh sách từ điển (Phần 12.6) được tư vấn, trong đó danh sách có thể thay đổi tùy thuộc vào loại mã thông báo. Từ điển đầu tiênNhận dạngMã thông báo phát ra một hoặc nhiều bình thườngLexemeĐể biểu diễn mã thông báo. Ví dụ,chuộttrở thànhRATBởi vì một trong những từ điển nhận ra rằng từchuộtlà một dạng số nhiều củaRAT. Một số từ được công nhận làDừng từ(Phần 12.6.1), khiến chúng bị bỏ qua vì chúng xảy ra quá thường xuyên để cách đọc kèo bóng đá. Trong ví dụ của chúng tôi, đây làA, trênIT. Nếu không có từ điển trong danh sách nhận ra mã thông báo thì nó cũng bị bỏ qua.-Bởi vì trên thực tế không có từ điển nào được gán cho loại mã thông báo của nó (Biểu tượng không gian), nghĩa là mã thông báo không gian sẽ không bao giờ được lập chỉ mục. Các lựa chọn của trình phân tích cú pháp, từ điển và loại mã thông báo cho chỉ mục được xác định bởi cấu hình tìm kiếm văn cách đọc kèo bóng đá đã chọn (Phần 12.7). Có thể có nhiều cấu hình khác nhau trong cùng một cơ sở dữ cách đọc kèo bóng đá và các cấu hình được xác định trước có sẵn cho các ngôn ngữ khác nhau.Tiếng AnhĐối với ngôn ngữ tiếng Anh.

hàmSetweightcó thể được sử dụng để dán nhãn các mục của AtsVectorvới một đã choTrọng lượng, trong đó trọng lượng là một trong các chữ cáiA, B, ChoặcD. Điều này thường được sử dụng để đánh dấu các mục đến từ các phần khác nhau của cách đọc kèo bóng đá, chẳng hạn như tiêu đề so với cơ thể.

to_tsVector(null) sẽ trả vềnull, nên sử dụngHOUNESCEBất cứ khi nào một trường có thể là null. Đây là phương thức được đề xuất để tạotsVectorTừ một cách đọc kèo bóng đá có cấu trúc:

Cập nhật TT SET TI =

Ở đây chúng tôi đã sử dụngSetweightĐể dán nhãn nguồn của mỗi từ vựng trong hoàn thànhtsVector, và sau đó hợp nhất được dán nhãntsVectorGiá trị sử dụngtsVectorToán tử Concatenation||. (Phần 12.4.1cung cấp chi tiết về các hoạt động này.)

12.3.2. Truy vấn phân tích cú pháp

PostgreSQLCung cấp các chức năngto_tsqueryPlainto_tsqueryđể chuyển đổi truy vấn sangtsqueryKiểu dữ cách đọc kèo bóng đá.to_tsquerycung cấp quyền truy cập vào nhiều tính năng hơnPlainto_tsquery, nhưng ít tha thứ về đầu vào của nó.

to_tsquery ([ config Regconfig, ]QueryText Text) Trả vềtsquery

to_tsqueryTạo AtsqueryGiá trị từQueryText, phải bao gồm các mã thông báo đơn lẻ được phân tách bởi các toán tử Boolean&(và),|(hoặc) và!(không). Các nhà khai thác này có thể được nhóm lại bằng cách sử dụng dấu ngoặc đơn.to_tsqueryPhải tuân theo các quy tắc chung chotsqueryĐầu vào, như được mô tả trongPhần 8.11. Sự khác biệt là trong khi cơ cách đọc kèo bóng đátsqueryĐầu vào lấy các mã thông báo theo mệnh giá,to_tsquery16560_16731

chọn to_tsquery ('tiếng Anh', 'The & Fat & Rats');

như trong cơ cách đọc kèo bóng đátsqueryĐầu vào, trọng lượng có thể được gắn vào mỗi từ vựng để hạn chế nó chỉ phù hợpTSVECTORLexeme của những trọng lượng đó. Ví dụ:

Chọn To_TSQuery ('Tiếng Anh', 'Chất béo | RATS: AB');

Ngoài ra,*có thể được gắn vào từ vựng để chỉ định khớp tiền tố:

Chọn To_TSQuery ('Supern:*A & Star: A*B');

​​Một từ vựng như vậy sẽ phù hợp với bất kỳ từ nào trong mộtTSVECTORbắt đầu bằng chuỗi đã cho.

to_tsquerycũng có thể chấp nhận các cụm từ được trích xuất đơn. Điều này chủ yếu hữu ích khi cấu hình bao gồm từ điển từ điển có thể kích hoạt trên các cụm từ đó.Supernovae Stars: SN:

Chọn to_tsquery ('' 'Supernovae Stars' '&! Crab');

Không có báo giá,to_tsquerysẽ tạo lỗi cú pháp cho các mã thông báo không được phân tách bởi một và hoặc toán tử.

Plainto_tsquery ([ config Regconfig, ]QueryText Text) trả vềtsquery

Plainto_tsqueryBiến đổi văn cách đọc kèo bóng đá chưa được định dạngQuerytextđếntsquery. Văn cách đọc kèo bóng đá được phân tích cú pháp và chuẩn hóa nhiều như choTO_TSVECTOR, sau đó là&(và) toán tử Boolean được chèn vào giữa các từ còn sống.

Ví dụ:

Chọn Plainto_tsquery ('Tiếng Anh', 'Chuột béo');

Lưu ý rằngPlainto_tsqueryKhông thể nhận ra các toán tử boolean, nhãn trọng lượng hoặc nhãn tiền tố-match trong đầu vào của nó:

Chọn Plainto_tsquery ('Tiếng Anh', 'The Fat & Rats: C');

Ở đây, tất cả các dấu câu đầu vào đã bị loại bỏ là ký hiệu không gian.

12.3.3. Kết quả cách đọc kèo bóng đá xếp hạng

19424_19583PostgreSQLcung cấp hai chức năng xếp hạng được xác định trước, có tính đến thông tin từ vựng, gần và cấu trúc; Đó là, họ xem xét tần suất các thuật ngữ truy vấn xuất hiện trong cách đọc kèo bóng đá, mức độ gần nhau của các điều khoản trong cách đọc kèo bóng đá và phần quan trọng của cách đọc kèo bóng đá nơi chúng xảy ra.

Hai chức năng xếp hạng hiện có là:

TS_RANK ([Trọng lượng float4 [],]Vector TSVECTOR, Truy vấn tsquery[, Bình thường hóa Số nguyên]) trả vềfloat4

Xếp hạng các vectơ dựa trên tần suất của các từ vựng phù hợp của chúng.

TS_RANK_CD ([Trọng lượng float4 [],]Vector tsVector, Truy vấn tsquery[, chuẩn hóa Số nguyên]) trả vềfloat4

Hàm này tính toánmật độ bìaXếp hạng cho vectơ và truy vấn cách đọc kèo bóng đá đã cho, như được mô tả trong "Xếp hạng liên quan của Clarke, Cormack và Tudhope cho một đến ba truy vấn có kỳ hạn" trong tạp chí "Xử lý và quản lý thông tin", 1999.TS_RANKXếp hạng ngoại trừ sự gần gũi của các từ vựng phù hợp với nhau được xem xét.

Hàm này yêu cầu thông tin vị trí của Lexeme để thực hiện tính toán của nó. Do đó, nó bỏ qua bất kỳ"Dải"Lexeme trongtsVector. Nếu không có từ các từ đầu không có trong đầu vào, kết quả sẽ bằng không.Phần 12.4.1Để biết thêm thông tin vềDảiThông tin chức năng và vị trí trongtsVectors.)

Đối với cả hai chức năng này, tùy chọnTrọng lượngĐối số cung cấp khả năng cân nhắc các phiên cách đọc kèo bóng đá từ ít nhiều tùy thuộc vào cách chúng được dán nhãn. Các mảng trọng lượng chỉ định mức độ cân nhắc của từng loại từ, theo thứ tự:

d-weight, c-weight, b-weight, a-weight

nếu khôngTrọng lượngđược cung cấp, sau đó các mặc định này được sử dụng:

0.1, 0.2, 0.4, 1.0

22804_23006

Vì một cách đọc kèo bóng đá dài hơn có cơ hội chứa một thuật ngữ truy vấn cao hơn, nên tính đến kích thước cách đọc kèo bóng đá tài khoản, ví dụ, một cách đọc kèo bóng đá hàng trăm từ với năm trường hợp của một từ tìm kiếm có thể phù hợp hơn một cách đọc kèo bóng đá hàng ngàn từ với năm trường hợp. Cả hai hàm xếp hạng đều có số nguyênBình thường hóaTùy chọn chỉ định xem độ dài của cách đọc kèo bóng đá có ảnh hưởng đến thứ hạng của nó như thế nào hay không. Tùy chọn số nguyên kiểm soát một số hành vi, vì vậy nó là một chút mặt nạ: bạn có thể chỉ định một hoặc nhiều hành vi bằng cách sử dụng|(ví dụ:2|4).

  • 0 (mặc định) bỏ qua độ dài cách đọc kèo bóng đá

  • 1 Chia thứ hạng cho 1 + logarit của độ dài cách đọc kèo bóng đá

  • 2 Chia thứ hạng cho độ dài cách đọc kèo bóng đá

  • 4 Chia thứ hạng cho khoảng cách hài hòa trung bình giữa các phạm vi (điều này chỉ được thực hiện bởiTS_RANK_CD)

  • 8 Chia thứ hạng cho số lượng từ duy nhất trong cách đọc kèo bóng đá

  • 16 Chia thứ hạng cho 1 + logarit của số lượng từ duy nhất trong cách đọc kèo bóng đá

  • 32 chia thứ hạng cho chính nó + 1

Nếu có nhiều hơn một bit cờ được chỉ định, các phép biến đổi được áp dụng trong đơn đặt hàng được liệt kê.

Điều quan trọng cần lưu ý là các chức năng xếp hạng không sử dụng bất kỳ thông tin toàn cầu nào, vì vậy không thể tạo ra một sự chuẩn hóa công bằng đến 1% hoặc 100% như đôi khi mong muốn. Tùy chọn chuẩn hóa 32 (Xếp hạng/(Xếp hạng+1)) có thể được áp dụng để tỷ lệ tất cả các cấp bậc vào phạm vi từ 0 đến một, nhưng tất nhiên đây chỉ là một thay đổi mỹ phẩm; nó sẽ không ảnh hưởng đến thứ tự kết quả cách đọc kèo bóng đá.

Đây là một ví dụ chỉ chọn mười trận đấu xếp hạng cao nhất:

Chọn thứ hạng, TS_RANK_CD (TextSearch, Truy vấn)

Đây là ví dụ tương tự bằng cách sử dụng xếp hạng chuẩn hóa:

Chọn thứ hạng, TS_RANK_CD (TextSearch, Truy vấn, 32/ * Xếp hạng/(Xếp hạng+1) */)

Xếp hạng có thể tốn kém vì nó yêu cầu tư vấntsVectorcủa mỗi cách đọc kèo bóng đá phù hợp, có thể bị ràng buộc I/O và do đó chậm. Thật không may, gần như không thể tránh được vì các truy vấn thực tế thường dẫn đến số lượng lớn các trận đấu.

12.3.4. Kết quả làm nổi bật

Để trình bày kết quả tìm kiếm, thật lý tưởng khi hiển thị một phần của mỗi cách đọc kèo bóng đá và cách nó liên quan đến truy vấn. Thông thường, các công cụ tìm kiếm hiển thị các đoạn của cách đọc kèo bóng đá với các thuật ngữ tìm kiếm được đánh dấu.PostgreSQLcung cấp chức năngts_headlineĐó là thực hiện chức năng này.

ts_headline ([ config Regconfig, ]Document Text, Truy vấn tsquery[, Tùy chọn Text ]) trả vềText

ts_headlineChấp nhận một cách đọc kèo bóng đá cùng với một truy vấn và trả về một đoạn trích từ cách đọc kèo bóng đá trong đó các điều khoản từ truy vấn được tô sáng. Cấu hình được sử dụng để phân tích cú pháp cách đọc kèo bóng đá có thể được chỉ định bởiconfig; nếu nhưconfigđược bỏ qua,default_text_search_configCấu hình được sử dụng.

Nếu mộtTùy chọnChuỗi được chỉ định, nó phải bao gồm một danh sách được phân tách bằng dấu phẩy của một hoặc nhiềuTùy chọn=giá trịcặp. Các tùy chọn có sẵn là:

  • Startsel, Stopsel: Các chuỗi để phân định các từ truy vấn xuất hiện trong cách đọc kèo bóng đá, để phân biệt chúng với các từ được trích xuất khác. Bạn phải tìm hai chuỗi này nếu chúng chứa khoảng trắng hoặc dấu phẩy.

  • Maxwords, minwords: Những con số này xác định các tiêu đề dài nhất và ngắn nhất cho đầu ra.

  • Từ ngắnGiá trị mặc định của ba bài viết tiếng Anh thông thường.

  • nổi bật: Cờ Boolean; nếu nhưTRUEToàn bộ cách đọc kèo bóng đá sẽ được sử dụng làm tiêu đề, bỏ qua ba tham số trước đó.

  • MaxFragments: Số lượng trích đoạn văn cách đọc kèo bóng đá tối đa hoặc các đoạn để hiển thị. Giá trị mặc định của Zero chọn phương thức tạo tiêu đề không theo định hướng không phân nhánh.MaxWordsvà các từ dàiTừ ngắnhoặc ít hơn được bỏ ở đầu và cuối của mỗi mảnh. Nếu không phải tất cả các từ truy vấn được tìm thấy trong cách đọc kèo bóng đá, thì một đoạn duy nhất của đầu tiênminwordsTrong cách đọc kèo bóng đá sẽ được hiển thị.

  • FragmentDelImiter: Khi có nhiều hơn một đoạn được hiển thị, các đoạn sẽ được phân tách bằng chuỗi này.

Bất kỳ tùy chọn không xác định nào cũng nhận được các mặc định này:

startsel = <b, stopsel = </b,

Ví dụ:

Chọn TS_HEADLINE ('Tiếng Anh',

ts_headlineSử dụng cách đọc kèo bóng đá gốc, không phảiTSVECTORTóm tắt, vì vậy nó có thể chậm và nên được sử dụng một cách cẩn thận. Một sai lầm điển hình là gọits_headlinechoMỗiKết hợp cách đọc kèo bóng đá khi chỉ có mười cách đọc kèo bóng đá được hiển thị.SQLSqueries có thể giúp; Đây là một ví dụ:

Chọn ID, TS_headline (Body, Q), Xếp hạng