Phiên kèo bóng đá euro được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên kèo bóng đá euro phát triển:18 / Devel
Phiên kèo bóng đá euro 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
Tài liệu này dành cho phiên kèo bóng đá euro 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 kèo bóng đá euro hoặc một trong các phiên kèo bóng đá euro đượ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 kèo bóng đá euro#

Để thực hiện kèo bóng đá euro toàn văn, phải có một chức năng để tạo AtsVectorTừ một tài kèo bóng đá euro 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 tài kèo bóng đá euro 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ả kèo bóng đá euro chức năng này.

12.3.1. Tài kèo bóng đá euro phân tích cú pháp#

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

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

TO_TSVECTOR11997_12084tsVectorliệt kê các từ vựng cùng với vị trí của chúng trong tài liệu. Tài liệu được xử lý theo cấu hình tìm kiếm văn kèo bóng đá euro đượ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 kèo bóng đá euro từA, trênhoặcIT, từchuộttrở thànhRATvà Dấu chấm câu-đã bị bỏ qua.

TheTO_TSVECTORhàm gọi nội bộ gọi trình phân tích cú pháp phá văn kèo bóng đá euro tài liệu thành 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ụ,RATStrở 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 để kèo bóng đá euro. 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 kèo bóng đá euro đã 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ữ kèo bóng đá euro 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 kèo bóng đá euro mục của AtsVectorvới một đã choTrọng lượng, trong đó trọng lượng là một trong kèo bóng đá euro 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 tài kèo bóng đá euro, 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 tài kèo bóng đá euro 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ề kèo bóng đá euro hoạt động này.)

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

PostgreSQLCung cấp kèo bóng đá euro chức năngto_tsquery, Plainto_tsquery, PHRASETO_TSQUERYwebsearch_to_tsqueryđể chuyển đổi truy vấn sangtsqueryKiểu dữ kèo bóng đá euro.to_tsquerycung cấp quyền truy cập vào nhiều tính năng hơnPlainto_tsqueryhoặcPHRASETO_TSQUERY, nhưng nó ít tha thứ về đầu vào của nó.WebSearch_TO_TSQuerylà phiên kèo bóng đá euro đơn giản củato_tsqueryVới cú pháp thay thế, tương tự như bộ được sử dụng bởi các công cụ kèo bóng đá euro web.

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

to_tsqueryTạo AtsqueryGiá trị từQuerytext, phải bao gồm kèo bóng đá euro mã thông báo đơn lẻ được phân tách bởitsqueryNgười vận hành&(và),|(hoặc),!(không) và<-(tiếp theo là), có thể được nhóm lại bằng cách sử dụng dấu ngoặc đơn. Nói cách khác, đầu vào choto_tsqueryPhải tuân theo kèo bóng đá euro quy tắc chung chotsqueryĐầu vào, như được mô tả trongPhần 8.11.2. Sự khác biệt là trong khi cơ kèo bóng đá eurotsqueryĐầu vào lấy kèo bóng đá euro mã thông báo theo mệnh giá,to_tsqueryBình thường hóa mỗi mã thông báo thành từ vựng bằng cách sử dụng cấu hình được chỉ định hoặc mặc định và loại bỏ bất kỳ mã thông báo nào là kèo bóng đá euro từ dừng theo cấu hình. Ví dụ:

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

như trong cơ kèo bóng đá eurotsqueryĐầ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 | chuột: 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_tsquery20000_20208Supernovae 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 kèo bóng đá euro mã thông báo không được phân tách bởi một và, hoặc hoặc theo sau bởi toán tử.

Plainto_tsquery ([ config Regconfig, ]Querytext Text) Trả vềtsquery

Plainto_tsqueryChuyển đổi văn kèo bóng đá euro không được định dạngQuerytextđến AtsqueryGiá trị. Văn kèo bóng đá euro được phân tích cú pháp và chuẩn hóa nhiều như choTO_TSVECTOR, sau đó&(và)tsquerytoán tử được chèn vào giữa kèo bóng đá euro từ còn sống.

Ví dụ:

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

Lưu ý rằngPlainto_tsquerysẽ không nhận ratsquerytoán tử, 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 ('English', 'The Fat & Rats: C');

Ở đây, tất cả kèo bóng đá euro dấu câu đầu vào đã bị loại bỏ.

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

PHRASETO_TSQUERYHành xử giống nhưPlainto_tsquery, ngoại trừ việc nó chèn<-(tiếp theo là) ​​toán tử giữa kèo bóng đá euro từ còn sống thay vì&(và) toán tử. Ngoài ra, kèo bóng đá euro từ dừng không chỉ đơn giản là bị loại bỏ, mà được tính bằng cách chèn<nToán tử chứ không phải<-Người vận hành. Chức năng này rất hữu ích khi kèo bóng đá euro các chuỗi từ vựng chính xác, vì sau đó là các toán tử kiểm tra thứ tự từ bỏ không chỉ sự hiện diện của tất cả các từ vựng.

Ví dụ:

chọn Phraseto_tsquery ('tiếng Anh', 'chuột béo');

nhưPlainto_tsquery, ThePHRASETO_TSQUERYHàm sẽ không nhận ratsquerytoán tử, nhãn trọng lượng hoặc nhãn tiền tố-match trong đầu vào của nó:

chọn Phraseto_tsquery ('English', 'The Fat & Rats: C');
23571_23596 config Regconfig, ]QueryText Text) Trả vềtsquery

WEBSEARCH_TO_TSQUERYTạo AtsqueryGiá trị từQuerytextSử dụng cú pháp thay thế trong đó văn kèo bóng đá euro không định dạng đơn giản là một truy vấn hợp lệ. Không giống nhưPlainto_tsqueryPHRASETO_TSQUERY, nó cũng nhận ra các toán tử nhất định. Hơn nữa, chức năng này sẽ không bao giờ tăng lỗi cú pháp, điều này cho phép sử dụng đầu vào do người dùng cung cấp thô cho kèo bóng đá euro.

  • văn kèo bóng đá euro chưa được trích xuất&toán tử, như thể được xử lý bởiPlainto_tsquery.

  • "Văn kèo bóng đá euro được trích dẫn"<-toán tử, như thể được xử lý bởiPHRASETO_TSQUERY.

  • hoặc: từHồihoặcHồisẽ được chuyển đổi thành|toán tử.

  • -: một dấu gạch ngang sẽ được chuyển đổi thành!toán tử.

dấu chấm câu khác bị bỏ qua. Vì vậy, giống nhưPlainto_tsqueryPHRASETO_TSQUERY, Thewebsearch_to_tsqueryHàm sẽ không nhận ratsquerytoán tử, nhãn trọng lượng hoặc nhãn tiền tố-match trong đầu vào của nó.

ví dụ:

25979_26832

12.3.3. Kết quả kèo bóng đá euro xếp hạng#

Xếp hạng cố gắng đo lường mức độ tài kèo bóng đá euro liên quan đến một truy vấn cụ thể, do đó khi có nhiều trận đấu có thể được hiển thị đầu tiên.PostgreSQLcung 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 tài kèo bóng đá euro, mức độ gần nhau của các điều khoản trong tài kèo bóng đá euro và phần quan trọng của tài kèo bóng đá euro 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[, chuẩn hóa Số nguyên]) trả vềfloat4

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

TS_RANK_CD ([Trọng lượng float4 [],]Vector tsVector, Truy vấn tsquery[, Bình thường 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 tài kèo bóng đá euro đã 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 kèo bóng đá euro 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ỳbị tướcLexeme trongTSVECTOR. Nếu không có từ kèo bóng đá euro 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 kèo bóng đá euro 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 đó kèo bóng đá euro mặc định này được sử dụng:

0.1, 0.2, 0.4, 1.0

31111_31313

Vì một tài kèo bóng đá euro 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 tài kèo bóng đá euro tài khoản, ví dụ, một tài kèo bóng đá euro 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 tài kèo bóng đá euro 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ênchuẩn hóaTùy chọn chỉ định xem độ dài của tài kèo bóng đá euro 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 tài kèo bóng đá euro

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

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

  • 4 Chia thứ hạng cho khoảng cách hài hòa trung bình giữa kèo bóng đá euro 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 tài kèo bóng đá euro

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

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

Nếu có nhiều hơn một bit cờ được chỉ định, kèo bóng đá euro 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à kèo bóng đá euro 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ả kèo bóng đá euro.

Đâ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) làm cấp bậc

Đâ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 tài kèo bóng đá euro 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, rất lý tưởng để hiển thị một phần của mỗi tài kèo bóng đá euro 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 tài kèo bóng đá euro 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 tài liệu cùng với một truy vấn và trả về một đoạn trích từ tài liệu trong đó các điều khoản từ truy vấn được tô sáng. Cụ thể, hàm sẽ sử dụng truy vấn để chọn các đoạn văn kèo bóng đá euro có liên quan, sau đó làm nổi bật tất cả các từ xuất hiện trong truy vấn, ngay cả khi các vị trí từ đó không khớp với các hạn chế của truy vấn.config; nếu nhưconfigbị 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. kèo bóng đá euro tùy chọn có sẵn là:

  • MaxWords, minwords(số nguyên): Những con số này xác định kèo bóng đá euro tiêu đề dài nhất và ngắn nhất cho đầu ra. kèo bóng đá euro giá trị mặc định là 35 và 15.

  • Từ ngắn(Số nguyên): kèo bóng đá euro từ có độ dài này hoặc ít hơn sẽ bị loại bỏ khi bắt đầu và kết thúc tiêu đề, trừ khi chúng là thuật ngữ truy vấn. Giá trị mặc định của ba bài viết tiếng Anh thông thường.

  • nổi bật(boolean): nếuTRUEToàn bộ tài kèo bóng đá euro sẽ được sử dụng làm tiêu đề, bỏ qua ba tham số trước đó. Mặc định làfalse.

  • MaxFragments(Số nguyên): Số lượng các đoạn văn kèo bóng đá euro tối đa để hiển thị. Giá trị mặc định của Zero chọn phương thức tạo tiêu đề không dựa trên fragment.

  • startsel, stopsel(chuỗi): Các chuỗi để phân định các từ truy vấn xuất hiện trong tài kèo bóng đá euro, để phân biệt chúng với các từ được trích xuất khác. Các giá trị mặc định là<bHồi</bxông, có thể phù hợp với đầu ra HTML (nhưng xem cảnh báo bên dưới).

  • FragmentDelImiter(chuỗi): Khi có nhiều hơn một đoạn được hiển thị, kèo bóng đá euro đoạn sẽ được phân tách bằng chuỗi này. Mặc định là...Hồi.

CẢNH BÁO: Kịch kèo bóng đá euro chéo site (XSS) an toàn

Đầu ra từts_headlinekhông được đảm bảo an toàn cho việc đưa trực tiếp vào kèo bóng đá euro trang web. Khinổi bậtfalse(mặc định), một số thẻ XML đơn giản được xóa khỏi tài liệu, nhưng điều này không được đảm bảo để xóa tất cả các đánh dấu HTML. Do đó, điều này không cung cấp một biện pháp phòng thủ hiệu quả chống lại các cuộc tấn công như các cuộc tấn công kịch kèo bóng đá euro chéo (XSS), khi làm việc với đầu vào không đáng tin cậy.

Những tên tùy chọn này được nhận ra không nhạy cảm với trường hợp. Bạn phải xử lý hai giá trị chuỗi nếu chúng chứa khoảng trắng hoặc dấu phẩy.

trong việc tạo tiêu đề không dựa trên fragment,ts_headlineđịnh vị kèo bóng đá euro khớp cho đã choTruy vấnvà chọn một cái duy nhất để hiển thị, thích kèo bóng đá euro trận đấu có nhiều từ truy vấn hơn trong độ dài tiêu đề được phép. Trong việc tạo tiêu đề dựa trên đoạn,ts_headlineđịnh vị kèo bóng đá euro truy vấn phù hợp và chia mỗi trận đấu thànhkèo bóng đá euro mảnhcủa không nhiều hơnMaxwordsmỗi từ, thích kèo bóng đá euro đoạn có nhiều từ truy vấn hơn và khi có thểHồiKéo dàiHồicác đoạn để bao gồm các từ xung quanh. Do đó, chế độ dựa trên đoạn hữu ích hơn khi truy vấn khớp với các phần lớn của tài kèo bóng đá euro hoặc khi mong muốn hiển thị nhiều trận đấu.minwordsCác từ trong tài kèo bóng đá euro sẽ được hiển thị.

Ví dụ:

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

ts_headlineSử dụng tài kèo bóng đá euro 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.