Phiên kèo bóng đá pháp được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên kèo bóng đá pháp phát triển:18 / Devel
Phiên kèo bóng đá pháp 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 đá pháp 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 đá pháp hoặc một trong các phiên kèo bóng đá pháp được hỗ trợ khác được liệt kê ở trên thay thế.

12.8. Kiểm tra và gỡ lỗi văn kèo bóng đá pháp Tìm kiếm

Hành vi của cấu hình tìm kiếm văn kèo bóng đá pháp tùy chỉnh có thể dễ dàng trở nên đủ phức tạp để khó hiểu hoặc không mong muốn. Các Các chức năng được mô tả trong phần này rất hữu ích để kiểm tra văn kèo bóng đá pháp Đối tượng tìm kiếm. Bạn có thể kiểm tra một cấu hình hoàn chỉnh hoặc kiểm tra phân tích cú pháp và từ điển riêng biệt.

12.8.1. Cấu hình kèo bóng đá pháp

hàmTS_DEBUGCho phép dễ dàng kiểm tra cấu hình tìm kiếm văn kèo bóng đá pháp.

ts_debug ([ config Regconfig, ]Document Text,
            NGOÀIbí danh Text,,
            NGOÀIMô tả Text,
            NGOÀImã thông báo Text,,
            NGOÀITừ điển Regdictionary [],,
            NGOÀI11313_11325 Regdictionary,,
            NGOÀILexeme Text [])
            trả về kèo bóng đá pháp ghi setof

TS_DEBUGHiển thị thông tin về mỗi mã thông báo củaDocumentĐược sản xuất bởi trình phân tích cú pháp và được xử lý bởi cấu hình Từ điển. Nó sử dụng cấu hình được chỉ định bởiconfighoặcdefault_text_search_configNếu đối số đó là bỏ qua.

ts_debugTrả về một hàng cho Mỗi mã thông báo được xác định trong văn kèo bóng đá pháp của trình phân tích cú pháp. Các cột trả về là

  • bí danh Text- Tên ngắn của loại mã thông báo

  • Mô tả Text- Mô tả loại mã thông báo

  • mã thông báo ​​Text- văn kèo bóng đá pháp của mã thông báo

  • Từ điển Regdictionary []- Từ điển được chọn bởi cấu hình cho loại mã thông báo này

  • Từ điển Regdictionary- Từ điển được công nhận mã thông báo hoặcnullNếu không có

  • Lexeme Text []- Lexeme (s) được sản xuất bởi Từ điển nhận ra mã thông báo hoặcnullNếu không có; một mảng trống () có nghĩa là nó được công nhận là điểm dừng từ

Đây là một ví dụ đơn giản:

13429_15446

Để trình diễn rộng rãi hơn, trước tiên chúng tôi tạo ra mộtpublic.englishCấu hình và Từ điển ISPELL cho ngôn ngữ tiếng Anh:

Tạo cấu hình tìm kiếm văn kèo bóng đá pháp công khai.English (copy = pg_catalog.english);

Tạo từ điển tìm kiếm văn kèo bóng đá pháp English_ispell (
    Template = ispell,
    Dictfile = tiếng Anh,
    Afffile = tiếng Anh,
    Stopwords = tiếng Anh
);

Thay đổi cấu hình tìm kiếm văn kèo bóng đá pháp công khai.english
   Thay đổi ánh xạ cho asciiword bằng English_ispell, English_stem;
Chọn * từ ts_debug ('public.english', 'Supernovaes sáng nhất');
   Bí danh |   Mô tả |    mã thông báo |         Từ điển |   Từ điển |   từ vựng   
-----------+-----------------+-------------+-----------------------------------+----------------+----------------------
 asciiword | Từ, tất cả ASCII | | English_ispell, English_stem | Tiếng Anh_ispell | 
 trống | Biểu tượng không gian |             |  |                | 
 asciiword | Từ, tất cả ASCII | Sáng nhất | English_ispell, English_stem | Tiếng Anh_ispell | sáng
 trống | Biểu tượng không gian |             |  |                | 
 asciiword | Từ, tất cả ASCII | Supernovaes | English_ispell, English_stem | Tiếng Anh_stem | supernova

Trong ví dụ này, từsáng nhấtđã được trình phân tích cú pháp công nhận làASCII từ(bí danhasciiword). Cho điều này Loại mã thông báo danh sách từ điển làEnglish_ispellEnglish_stem. Từ được công nhận bởiEnglish_ispell, làm giảm nó thành danh từSáng. TừSupernovaeskhông được biết đếnEnglish_ispellTừ điển để nó được chuyển cho Từ điển tiếp theo, và, may mắn thay, đã được công nhận (trên thực tế,17532_17546là một từ điển bóng tuyết trong đó nhận ra mọi thứ; Đó là lý do tại sao nó được đặt tại Kết thúc danh sách từ điển).

TừTheđã được công nhận bởiEnglish_ispellTừ điển như một điểm dừng từ (Phần 12.6.1) và sẽ không được lập chỉ mục. Không gian bị loại bỏ cũng vậy, vì cấu hình không cung cấp từ điển nào cả cho họ.

Bạn có thể giảm âm lượng đầu ra bằng cách chỉ định rõ ràng Cột bạn muốn xem:

18183_18648

12.8.2. kèo bóng đá pháp trình phân tích cú pháp

Các chức năng sau cho phép kiểm tra trực tiếp một văn kèo bóng đá pháp Trình phân tích cú pháp tìm kiếm.

ts_parse (Parser_name Text, Document Text, OutTokid Số nguyên, OUTmã thông báo Text) trả vềSetof Recordts_parse (Parser_oid OID, Document Text, OUTTokid Số nguyên, Outmã thông báo Text) Trả vềSetof Record

ts_parse19702_19726Documentvà trả lại một loạt của hồ sơ, một cho mỗi mã thông báo được tạo ra bởi phân tích cú pháp. Mỗi kèo bóng đá pháp ghi Bao gồm mộtTokidHiển thị được gán loại mã thông báo và mộtmã thông báođó là Văn kèo bóng đá pháp của mã thông báo. Ví dụ:

Chọn * từ ts_parse ('mặc định', '123 - một số');
 tokid | mã thông báo
-------+--------
    22 | 123
    12 |
    12 | -
     1 | Một
    12 |
     1 | con số
ts_token_type (Parser_name Text, OUTTokid Số nguyên, OUTbí danh Text, OUTMô tả Text20598_20610Setof Recordts_token_type (Parser_oid OID, ra ngoàiTokid Số nguyên, OUTbí danh Text, OUTMô tả Text) Trả vềSETOF Record

ts_token_typeTrả về một bảng trong đó mô tả từng loại mã thông báo mà trình phân tích cú pháp được chỉ định có thể nhận ra. Đối với mỗi loại mã thông báo, bảng cung cấp số nguyênTokidmà trình phân tích cú pháp sử dụng để dán nhãn mã thông báo thuộc loại đó,bí danhĐiều đó Đặt tên cho loại mã thông báo trong các lệnh cấu hình và ngắnMô tả. Ví dụ:

21492_22733

12.8.3. Từ điển kèo bóng đá pháp

Thets_lexizeHàm tạo điều kiện kèo bóng đá pháp từ điển.

ts_lexize (dict Regdictionary, mã thông báo Text) trả vềText []

ts_lexizeTrả về một mảng từ bỏ nếu đầu vàomã thông báoIS được biết đến từ điển hoặc một mảng trống nếu mã thông báo là được biết đến từ điển nhưng nó là một từ dừng, hoặcnullNếu đó là một từ không xác định.

Ví dụ:

Chọn TS_LEXIZE ('English_stem', 'Stars');
 ts_lexize
-----------
 ngôi sao

Chọn ts_lexize ('English_stem', 'a');
 ts_lexize
-----------

Lưu ý:Thets_lexizeHàm mong đợi mộtmã thông báo, không phải văn kèo bóng đá pháp. Đây là a trường hợp điều này có thể gây nhầm lẫn:

Chọn ts_lexize ('thesaurus_astro', 'Supernovae Stars') là NULL;
 ? Cột?
----------
 t

Từ điển Thesaurusthesaurus_astrokhông biết cụm từSupernovae Stars, nhưngts_lexizethất bại vì nó không phân tích Văn kèo bóng đá pháp đầu vào nhưng coi nó là một mã thông báo duy nhất. Sử dụngPlainto_tsqueryhoặcto_tsVectorĐể kèo bóng đá pháp từ điển đồng nghĩa Từ điển, ví dụ:

Chọn Plainto_tsquery ('Supernovae Stars');
 Plainto_tsquery
-----------------
 'Sn'