Phiên bản được hỗ trợ:hiện tại(17)16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản 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

12.1. Giới thiệu#

Tìm kiếm toàn văn (hoặc chỉTìm kiếm văn bản) Cung cấp khả năng xác định ngôn ngữ tự nhiênTài kèo bóng đá hôm nay và ngày maithỏa mãn ATruy vấn, và tùy chọn để sắp xếp chúng theo sự liên quan đến truy vấn. Loại tìm kiếm phổ biến nhất là tìm tất cả các tài kèo bóng đá hôm nay và ngày mai có chứaĐiều khoản truy vấnvà trả lại chúng theo thứ tự của họTương tựđến truy vấn. kèo bóng đá hôm nay và ngày mai khái niệm củaTruy vấnTương tựrất linh hoạt và phụ thuộc kèo bóng đá hôm nay và ngày maio ứng dụng cụ thể. Tìm kiếm đơn giản nhất xem xétTruy vấnnhư một tập hợp kèo bóng đá hôm nay và ngày mai từ vàTương tựLà tần số của các từ truy vấn trong tài kèo bóng đá hôm nay và ngày mai.

Các toán tử tìm kiếm văn bản đã tồn tại trong cơ sở dữ kèo bóng đá hôm nay và ngày mai trong nhiều năm.PostgreSQL~, ~*, nhưilikeNhà khai thác cho các loại dữ kèo bóng đá hôm nay và ngày mai văn bản, nhưng chúng thiếu nhiều thuộc tính thiết yếu được yêu cầu bởi các hệ thống thông tin hiện đại:

  • Không có hỗ trợ ngôn ngữ, ngay cả đối với tiếng Anh. Biểu thức thông thường không đủ vì chúng không thể dễ dàng xử lý kèo bóng đá hôm nay và ngày mai từ có nguồn gốc, ví dụ:thỏa mãnthỏa mãn. Bạn có thể bỏ lỡ các tài kèo bóng đá hôm nay và ngày mai có chứathỏa mãn, mặc dù bạn có thể muốn tìm thấy chúng khi tìm kiếmthỏa mãn. Có thể sử dụnghoặcĐể tìm kiếm nhiều biểu mẫu có nguồn gốc, nhưng điều này là tẻ nhạt và dễ bị lỗi (một số từ có thể có kèo bóng đá hôm nay và ngày maii nghìn dẫn xuất).

  • Họ không cung cấp đặt hàng (xếp hạng) kết quả tìm kiếm, điều này làm cho chúng không hiệu quả khi tìm thấy hàng ngàn tài kèo bóng đá hôm nay và ngày mai phù hợp.

  • Chúng có xu hướng chậm vì không có hỗ trợ chỉ mục, vì vậy họ phải xử lý tất cả các tài kèo bóng đá hôm nay và ngày mai cho mỗi tìm kiếm.

Lập chỉ mục văn bản đầy đủ cho phép các tài kèo bóng đá hôm nay và ngày mai đượctiền xử lývà một chỉ mục được lưu để tìm kiếm nhanh sau. Tiền xử lý bao gồm:

  • phân tích tài kèo bóng đá hôm nay và ngày mai vàomã thông báo. Rất hữu ích để xác định kèo bóng đá hôm nay và ngày mai lớp mã thông báo khác nhau, ví dụ: số, từ, từ phức tạp, địa chỉ email, để chúng có thể được xử lý khác nhau.PostgreSQLsử dụng Aphân tích cú phápĐể thực hiện bước này. Một trình phân tích cú pháp tiêu chuẩn được cung cấp và trình phân tích cú pháp tùy chỉnh có thể được tạo cho kèo bóng đá hôm nay và ngày mai nhu cầu cụ thể.

  • Chuyển đổi mã thông báo thànhLexeme. Một từ vựng là một chuỗi, giống như một mã thông báo, nhưng nó đã đượcchuẩn hóasao cho kèo bóng đá hôm nay và ngày mai hình thức khác nhau của cùng một từ được thực hiện giống nhau. Ví dụ, bình thường hóa hầu như luôn bao gồm kèo bóng đá hôm nay và ngày mai chữ cái cao cấp gấp vào trường hợp thấp hơn và thường liên quan đến việc loại bỏ kèo bóng đá hôm nay và ngày mai hậu tố (chẳng hạn nhưShoặcesbằng tiếng Anh). Điều này cho phép kèo bóng đá hôm nay và ngày mai tìm kiếm tìm thấy kèo bóng đá hôm nay và ngày mai dạng biến thể của cùng một từ, mà không cần nhập một cách tẻ nhạt tất cả kèo bóng đá hôm nay và ngày mai biến thể có thể.Dừng từ, đó là những từ phổ biến đến mức chúng vô dụng khi tìm kiếm. .PostgreSQLsử dụngTừ điểnĐể thực hiện bước này. kèo bóng đá hôm nay và ngày mai từ điển tiêu chuẩn khác nhau được cung cấp và kèo bóng đá hôm nay và ngày mai từ tùy chỉnh có thể được tạo cho kèo bóng đá hôm nay và ngày mai nhu cầu cụ thể.

  • Lưu trữ các tài kèo bóng đá hôm nay và ngày mai được xử lý trước được tối ưu hóa để tìm kiếm. Ví dụ, mỗi tài kèo bóng đá hôm nay và ngày mai có thể được biểu diễn dưới dạng một mảng được sắp xếp của các từ vựng được chuẩn hóa.Xếp hạng gần, để một tài kèo bóng đá hôm nay và ngày mai chứa nhiều hơndày đặcVùng của kèo bóng đá hôm nay và ngày mai từ truy vấn được gán thứ hạng cao hơn một từ có từ truy vấn phân tán.

Từ điển cho phép kiểm soát hạt mịn đối với kèo bóng đá hôm nay và ngày mai mã thông báo được chuẩn hóa. Với từ điển thích hợp, bạn có thể:

  • Xác định kèo bóng đá hôm nay và ngày mai từ dừng không nên lập chỉ mục.

  • Bản đồ đồng nghĩa với một từ sử dụngISPELL.

  • Bản đồ cụm từ một từ bằng cách sử dụng từ điển đồng nghĩa.

  • Bản đồ kèo bóng đá hôm nay và ngày mai biến thể khác nhau của một từ thành một hình thức kinh điển bằng cách sử dụngISPELLTừ điển.

  • Bản đồ kèo bóng đá hôm nay và ngày mai biến thể khác nhau của một từ thành một hình thức kinh điển bằng cách sử dụngSnowballQuy tắc Stemmer.

Một loại dữ kèo bóng đá hôm nay và ngày maitsVectorđược cung cấp để lưu trữ các tài kèo bóng đá hôm nay và ngày mai được xử lý trước, cùng với loạitsqueryđể biểu diễn kèo bóng đá hôm nay và ngày mai truy vấn đã xử lý (Phần 8.11). Có nhiều chức năng và toán tử có sẵn cho các loại dữ kèo bóng đá hôm nay và ngày mai này (Phần 9.13), Điều quan trọng nhất là toán tử khớp@@, mà chúng tôi giới thiệu trongPhần 12.1.2. Tìm kiếm toàn văn có thể được tăng tốc bằng kèo bóng đá hôm nay và ngày mai chỉ mục (Phần 12.9).

12.1.1. Tài kèo bóng đá hôm nay và ngày mai là gì?#

ADocumentlà đơn vị tìm kiếm trong hệ thống tìm kiếm văn bản đầy đủ; Ví dụ, một bài báo tạp chí hoặc tin nhắn email.

cho kèo bóng đá hôm nay và ngày mai tìm kiếm trongPostgreSQL, một tài kèo bóng đá hôm nay và ngày mai thường là một trường văn bản trong một hàng của bảng cơ sở dữ kèo bóng đá hôm nay và ngày mai hoặc có thể là sự kết hợp (nối) của các trường đó, có thể được lưu trữ trong một số bảng hoặc thu được động. Nói cách khác, một tài kèo bóng đá hôm nay và ngày mai có thể được xây dựng từ các phần khác nhau để lập chỉ mục và nó có thể không được lưu trữ ở bất cứ đâu nói chung.

Chọn Tiêu đề || '' ||

Lưu ý

Trên thực tế, trong kèo bóng đá hôm nay và ngày mai truy vấn ví dụ này,HOUNESCEnên được sử dụng để ngăn chặn mộtnullThuộc tính từ AnullKết quả cho toàn bộ tài kèo bóng đá hôm nay và ngày mai.

Một khả năng khác là lưu trữ các tài kèo bóng đá hôm nay và ngày mai dưới dạng các tệp văn bản đơn giản trong hệ thống tệp. Trong trường hợp này, cơ sở dữ kèo bóng đá hôm nay và ngày mai có thể được sử dụng để lưu trữ chỉ mục văn bản đầy đủ và để thực hiện các tìm kiếm và một số định danh duy nhất có thể được sử dụng để truy xuất tài kèo bóng đá hôm nay và ngày mai từ hệ thống tệp.PostgreSQL. Ngoài ra, giữ mọi thứ bên trong cơ sở dữ kèo bóng đá hôm nay và ngày mai cho phép dễ dàng truy cập vào siêu dữ kèo bóng đá hôm nay và ngày mai tài kèo bóng đá hôm nay và ngày mai để hỗ trợ lập chỉ mục và hiển thị.

Đối với mục đích tìm kiếm văn bản, mỗi tài kèo bóng đá hôm nay và ngày mai phải được giảm xuống mức tiền xử lýtsVectorĐịnh dạng. Tìm kiếm và xếp hạng được thực hiện hoàn toàn trêntsVectorBiểu diễn của một tài kèo bóng đá hôm nay và ngày mai - văn bản gốc chỉ cần được truy xuất khi tài kèo bóng đá hôm nay và ngày mai đã được chọn để hiển thị cho người dùng. Do đó chúng tôi thường nói vềtsVectorLà tài kèo bóng đá hôm nay và ngày mai, nhưng tất nhiên nó chỉ là một đại diện nhỏ gọn của tài kèo bóng đá hôm nay và ngày mai đầy đủ.

12.1.2. Kết hợp văn bản cơ bản#

Tìm kiếm toàn văn trongPostgreSQLdựa trên toán tử khớp@@, trả vềĐúngNếu ATSVECTOR(tài kèo bóng đá hôm nay và ngày mai) khớp với Atsquery(truy vấn). Không quan trọng kiểu dữ kèo bóng đá hôm nay và ngày mai nào được viết đầu tiên:

Chọn 'Một con mèo béo ngồi trên thảm và ăn một con chuột béo' :: tsvector @@ 'Cat & Rat' :: Tsquery;

Như ví dụ trên gợi ý, Atsquerykhông chỉ là văn bản thô, nhiều hơn mộtTSVECTORIS. MỘTtsqueryChứa kèo bóng đá hôm nay và ngày mai thuật ngữ tìm kiếm, phải được quy định bình thường và có thể kết hợp nhiều thuật ngữ bằng cách sử dụng và, hoặc, không, và theo sau là kèo bóng đá hôm nay và ngày mai toán tử. (Để biết chi tiết cú pháp, xemPhần 8.11.2.) Có kèo bóng đá hôm nay và ngày mai chức năngto_tsquery, Plainto_tsqueryPHRASETO_TSQUERYhữu ích trong việc chuyển đổi văn bản viết người dùng thành một cách thích hợptsquery, chủ yếu bằng cách bình thường hóa kèo bóng đá hôm nay và ngày mai từ xuất hiện trong văn bản. Tương tự,to_tsVectorđược sử dụng để phân tích và bình thường hóa chuỗi tài kèo bóng đá hôm nay và ngày mai. Vì vậy, trong thực tế, một kết quả tìm kiếm văn bản sẽ trông giống như thế này:

Chọn to_tsvector ('mèo béo đã ăn chuột béo') @@ to_tsquery ('Fat & Rat');

Quan sát rằng trận đấu này sẽ không thành công nếu được viết là

Chọn 'mèo béo đã ăn chuột béo' :: tsvector @@ to_tsquery ('fat & chuột');

Vì ở đây không bình thường hóa từRATSsẽ xảy ra. kèo bóng đá hôm nay và ngày mai yếu tố của ATSVECTORlà những người từ bỏ, được giả định đã được chuẩn hóa, vì vậyRATSkhông khớpRAT.

The@@Nhà điều hành cũng hỗ trợTextĐầu kèo bóng đá hôm nay và ngày maio, cho phép chuyển đổi rõ ràng chuỗi văn bản thànhtsVectorhoặctsqueryĐược bỏ qua trong kèo bóng đá hôm nay và ngày mai trường hợp đơn giản. kèo bóng đá hôm nay và ngày mai biến thể có sẵn là:

tsVector @@ tsquery

Hai cái đầu tiên chúng ta đã thấy. Biểu mẫuText @@ tsquerylà tương đương vớito_tsVector (x) @@ y. Biểu mẫuText @@ Textlà tương đương vớito_tsVector (x) @@ Plainto_tsquery (y).

trong mộttsquery, The&(và) Người vận hành chỉ định rằng cả hai đối số của nó phải xuất hiện trong tài kèo bóng đá hôm nay và ngày mai để có một trận đấu. Tương tự,|(hoặc) toán tử chỉ định rằng ít nhất một trong kèo bóng đá hôm nay và ngày mai đối số của nó phải xuất hiện, trong khi!(không) toán tử chỉ định rằng đối số của nó phảikhôngxuất hiện để có một trận đấu. Ví dụ: truy vấnFat &! con chuộtkhớp với các tài kèo bóng đá hôm nay và ngày mai có chứaFATnhưng khôngRAT.

Tìm kiếm cụm từ có thể với sự trợ giúp của<-(tiếp theo là)tsqueryToán tử, chỉ khớp với kèo bóng đá hôm nay và ngày mai đối số của nó có kèo bóng đá hôm nay và ngày mai trận đấu liền kề và theo thứ tự đã cho. Ví dụ:

23946_24153

Có một phiên bản chung hơn sau đó là toán tử có biểu mẫu<n, trong đónlà một số nguyên đứng cho sự khác biệt giữa kèo bóng đá hôm nay và ngày mai vị trí của kèo bóng đá hôm nay và ngày mai từ vựng phù hợp.<1giống như<-, trong khi<2Cho phép chính xác một từ vựng khác xuất hiện giữa kèo bóng đá hôm nay và ngày mai trận đấu, v.v. ThePHRASETO_TSQUERYHàm sử dụng toán tử này để xây dựng mộttsquerycó thể khớp với cụm từ đa từ khi một số từ là kèo bóng đá hôm nay và ngày mai từ dừng. Ví dụ:

Chọn Phraseto_TSquery ('Mèo đã ăn chuột');

Một trường hợp đặc biệt đôi khi hữu ích là<0có thể được sử dụng để yêu cầu hai mẫu phù hợp với cùng một từ.

dấu ngoặc đơn có thể được sử dụng để kiểm soát việc làm tổ củatsqueryNgười vận hành. Không có dấu ngoặc đơn,|ràng buộc ít nhất, sau đó&, sau đó<-!chặt chẽ nhất.

Đáng chú ý rằng kèo bóng đá hôm nay và ngày mai toán tử và/hoặc/không có nghĩa là một cái gì đó khác biệt một cách tinh tế khi chúng nằm trong kèo bóng đá hôm nay và ngày mai đối số của một toán tử theo sau so với khi chúng không, bởi vì trong đó theo vị trí chính xác của trận đấu là rất đáng kể. Ví dụ: bình thường! XChỉ phù hợp với các tài kèo bóng đá hôm nay và ngày mai không chứaxBất cứ nơi nào. Nhưng! X <- yMatchesYNếu nó không phải là ngay sau khix; sự xuất hiện củaxnơi khác trong tài kèo bóng đá hôm nay và ngày mai không ngăn được một trận đấu. Một ví dụ khác làX & YThông thường chỉ yêu cầu điều đóxyCả hai xuất hiện ở đâu đó trong tài kèo bóng đá hôm nay và ngày mai, nhưng(x & y) <- ZYêu cầuxYĐể khớp tại cùng một nơi, ngay trước AZ. Do đó, truy vấn này hoạt động khác vớix <- z & y <- z, sẽ khớp với một tài kèo bóng đá hôm nay và ngày mai chứa hai chuỗi riêng biệtX ZY Z. (Truy vấn cụ thể này là vô dụng như được viết, vìxYKhông thể khớp tại cùng một nơi; Nhưng với kèo bóng đá hôm nay và ngày mai tình huống phức tạp hơn như kèo bóng đá hôm nay và ngày mai mẫu khớp tiền tố, một truy vấn của biểu mẫu này có thể hữu ích.)

12.1.3. Cấu hình#

Trên đây đều là tất cả kèo bóng đá hôm nay và ngày mai ví dụ tìm kiếm văn bản đơn giản. Như đã đề cập trước đây, chức năng tìm kiếm văn bản đầy đủ bao gồm khả năng thực hiện nhiều việc hơn: Bỏ qua lập chỉ mục kèo bóng đá hôm nay và ngày mai từ (từ dừng), từ đồng nghĩa quy trình và sử dụng phân tích cú pháp tinh vi, ví dụ, phân tích cú pháp dựa trên không chỉ là không gian trắng.Cấu hình tìm kiếm văn bản. PostgreSQLđi kèm với kèo bóng đá hôm nay và ngày mai cấu hình được xác định trước cho nhiều ngôn ngữ và bạn có thể dễ dàng tạo cấu hình của riêng mình. (PSQL's\ DFLệnh hiển thị tất cả kèo bóng đá hôm nay và ngày mai cấu hình có sẵn.)

Trong quá trình cài đặt, cấu hình thích hợp được chọn vàdefault_text_search_configđược đặt tương ứng trongPostgreSql.conf. Nếu bạn đang sử dụng cùng một cấu hình tìm kiếm văn bản cho toàn bộ cụm, bạn có thể sử dụng giá trị trongPostgreSql.conf. Để sử dụng các cấu hình khác nhau trong toàn bộ cụm nhưng cùng một cấu hình trong bất kỳ một cơ sở dữ kèo bóng đá hôm nay và ngày mai nào, hãy sử dụngthay đổi cơ sở dữ kèo bóng đá hôm nay và ngày mai ... SET. Nếu không, bạn có thể đặtDefault_Text_Search_ConfigTrong mỗi phiên.

mỗi chức năng tìm kiếm văn bản phụ thuộc kèo bóng đá hôm nay và ngày maio cấu hình có tùy chọnRegconfigĐối số, để cấu hình để sử dụng có thể được chỉ định rõ ràng.default_text_search_configchỉ được sử dụng khi đối số này bị bỏ qua.

Để dễ dàng xây dựng cấu hình tìm kiếm văn bản tùy chỉnh, một cấu hình được xây dựng từ các đối tượng cơ sở dữ kèo bóng đá hôm nay và ngày mai đơn giản hơn.PostgreSQL29317_29405

  • Sản phẩm tìm kiếm văn bảnChia tài kèo bóng đá hôm nay và ngày mai vào mã thông báo và phân loại từng mã thông báo (ví dụ: dưới dạng từ hoặc số).

  • Từ điển tìm kiếm văn bảnChuyển đổi mã thông báo sang dạng chuẩn hóa và từ chối kèo bóng đá hôm nay và ngày mai từ dừng.

  • Mẫu tìm kiếm văn bảnCung cấp kèo bóng đá hôm nay và ngày mai chức năng từ điển cơ bản. (Một từ điển chỉ cần chỉ định một mẫu và một tập hợp kèo bóng đá hôm nay và ngày mai tham số cho mẫu.)

  • Cấu hình tìm kiếm văn bảnChọn trình phân tích cú pháp và một bộ từ điển để sử dụng để bình thường hóa kèo bóng đá hôm nay và ngày mai mã thông báo được tạo bởi trình phân tích cú pháp.

Trình phân tích và mẫu tìm kiếm văn bản được xây dựng từ các hàm C cấp thấp; Do đó, nó yêu cầu khả năng lập trình C để phát triển những đặc quyền mới và các đặc quyền của siêu người dùng để cài đặt một vào cơ sở dữ kèo bóng đá hôm nay và ngày mai.PREDT/khu vực củaPostgreSQLPhân phối.) Vì từ điển và cấu hình chỉ tham số hóa và kết nối với nhau một số trình phân tích cú pháp và mẫu cơ bản, không cần đặc quyền đặc biệt để tạo từ điển hoặc cấu hình mới. Ví dụ về việc tạo từ điển và cấu hình tùy chỉnh xuất hiện sau trong chương này.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài kèo bóng đá hôm nay và ngày mai không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài kèo bóng đá hôm nay và ngày mai.