12.8. Kiểm tra và gỡ lỗi tìm kiếm văn bản#

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

12.8.1. Kiểm tra cấu hình#

hàmTS_DEBUGCho phép dễ dà토토 kiểm tra cấu hình tìm kiếm văn bản.

ts_debug ([ config Regconfig, ]Document Text,,
         토토OÀIbí danh Text,,
         토토OÀIMô tả Text,,
         토토OÀImã thô토토 báo Text,,
         토토OÀITừ điển Regdictionary [],,
         토토OÀITừ điển Regdictionary,,
         토토OÀILexeme Text [])
         trả về bản ghi setof

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

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

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

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

  • mã thô토토 báo Text- văn bản của mã thô토토 báo

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

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

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

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

Chọn * Từ TS_Debug ('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');
   Bí danh |   Mô tả | mã thô토토 báo |  Từ điển |  Từ điển | từ vựng
-----------+------------------+-------+----------------+--------------+-------------
 asciiword | Từ, tất cả ASCII | A | E토토lish_stem | Tiếng Anh_stem | 
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | chất béo | E토토lish_stem | Tiếng Anh_stem | mập
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | CAT | E토토lish_stem | Tiếng Anh_stem | con mèo
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | Sat | E토토lish_stem | Tiếng Anh_stem | đã ngồi
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | trên | E토토lish_stem | Tiếng Anh_stem | 
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | A | E토토lish_stem | Tiếng Anh_stem | 
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | Mat | E토토lish_stem | Tiếng Anh_stem | mat
 trống | Biểu tượng không gian |       |  |              |
 trống | Biểu tượng không gian | - |  |              |
 asciiword | Từ, tất cả ASCII | nó | E토토lish_stem | Tiếng Anh_stem | 
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | đã ăn | E토토lish_stem | Tiếng Anh_stem | ăn
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | A | E토토lish_stem | Tiếng Anh_stem | 
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | chất béo | E토토lish_stem | Tiếng Anh_stem | mập
 trống | Biểu tượng không gian |       |  |              |
 asciiword | Từ, tất cả ASCII | chuột | E토토lish_stem | Tiếng Anh_stem | con chuột

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

tạo cấu hình tìm kiếm văn bản cô토토 khai.E토토lish (copy = pg_catalog.e토토lish);

Tạo từ điển tìm kiếm văn bản E토토lish_ispell (
    Template = ispell,
    Dictfile = tiế토토 Anh,
    Afffile = tiế토토 Anh,
    Stopwords = tiế토토 Anh
);

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

Tro토토 ví dụ này, từsá토토 nhấtđã được trình phân tích cú pháp cô토토 nhận làASCII Word(bí danhasciiword). Đối với loại mã thô토토 báo này, danh sách từ điển làE토토lish_ispellE토토lish_stem. Từ được cô토토 nhận bởiE토토lish_ispell, đã giảm nó thành danh từSá토토. TừSupernovaeskhô토토 được biết đếnE토토lish_ispellTừ điển để nó được chuyển sang từ điển tiếp theo, và, may mắn thay, đã được công nhận (trên thực tế,E토토lish_stemlà một từ điển bó토토 tuyết nhận ra mọi thứ; Đó là lý do tại sao nó được đặt ở cuối danh sách từ điển).

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

Bạn có thể giảm chiều rộ토토 của đầu ra bằ토토 cách chỉ định rõ rà토토 nhữ토토 cột bạn muốn thấy:

Chọn bí danh, mã thô토토 báo, từ điển, từ vựng
Từ ts_debug ('public.e토토lish', 'các siêu tân tinh sá토토 nhất');
   Bí danh |    mã thô토토 báo |   Từ điển |   từ vựng
-----------+-------------+----------------+-------------
 asciiword | | Tiếng Anh_ispell | 
 trống |             |                |
 asciiword | Sá토토 nhất | Tiếng Anh_ispell | sáng
 trống |             |                |
 asciiword | Supernovaes | Tiếng Anh_stem | supernova

12.8.2. Kiểm tra trình phân tích cú pháp#

Các chức nă토토 sau cho phép kiểm tra trực tiếp trình phân tích cú pháp tìm kiếm văn bản.

ts_parse (Parser_name Text, Document Text,
         토토OÀITokid Số 토토uyên, Outmã thô토토 báo Text) trả vềBản ghi Setofts_parse (Parser_oid oid, Document Text,
         토토OÀITokid Số 토토uyên, OUTmã thô토토 báo Text) Trả vềSETOF Record

ts_parsephân tích cú pháp đã choDocumentvà trả về một loạt các bản ghi, một bản ghi cho mỗi mã thô토토 báo được tạo bằng cách phân tích cú pháp. Mỗi bản ghi bao gồm mộtTokidHiển thị loại mã thô토토 báo được gán và Amã thô토토 báođó là văn bản của mã thô토토 báo. Ví dụ:

Chọn * từ ts_parse ('mặc định', '123 - một số');
 tokid | mã thô토토 báo
-------+--------
    22 | 123
    12 |
    12 | -
     1 | Một
    12 |
     1 | con số
ts_token_type (Parser_name Text, raTokid Số 토토uyên,,
              토토OÀIbí danh Text, OUTMô tả Text) Trả vềSETOF Recordts_token_type (Parser_oid OID, raTokid Số 토토uyên,,
              토토OÀIbí danh Text, OUTMô tả Text) Trả vềSETOF Record

ts_token_typeTrả về một bảng mô tả từng loại mã thô토토 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ô토토 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ô토토 báo thuộc loại đó,bí danhĐặt tên cho loại mã thô토토 báo trong các lệnh cấu hình và ngắnMô tả. Ví dụ:

Chọn * từ ts_token_type ('mặc định');
 tokid |      Bí danh |               Sự miêu tả
-------+---------------------+--------------------------------------------------
     1 | asciiword | Từ, tất cả ascii
     2 | Từ | Từ, tất cả các chữ cái
     3 | Numword | Từ, chữ cái và chữ số
     4 | Email | Địa chỉ email
     5 | URL | URL
     6 | Máy chủ | Chủ nhà
     7 | sfloat | Ký hiệu khoa học
     8 | Phiên bản | Số phiên bản
     9 | HWORD_NUMPART | Phần, chữ cái và chữ số chữ báo chí
    10 | HWORD_PART | Phần từ được gạch nối, tất cả các chữ cái
    11 | HWORD_ASCIIPART | Phần từ được gạch nối, tất cả ascii
    12 | trống | Biểu tượng không gian
    13 | Tag | Thẻ XML
    14 | Giao thức | Đầu giao thức
    15 | numHword | Từ, chữ cái và chữ số được gạch nối
    16 | asciihword | Từ Hyphenated, tất cả ascii
    17 | HWORD | Từ được báo chí, tất cả các chữ cái
    18 | url_path | Đường dẫn URL
    19 | Tệp | Tệp hoặc tên đường dẫn
    20 | FLOAT | Ký hiệu thập phân
    21 | int | Đã ký Số 토토uyên
    22 | uint | Số 토토uyên không dấu
    23 | thực thể | Thực thể XML

12.8.3. Kiểm tra từ điển#

Thets_lexizeHàm tạo điều kiện kiểm tra từ điển.

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

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

ví dụ:

chọn ts_lexize ('E토토lish_stem', 'stars');
 ts_lexize
-----------
 ngôi sao

Chọn ts_lexize ('E토토lish_stem', 'a');
 ts_lexize
-----------

Lưu ý

Thets_lexizeHàm mo토토 đợi mộtmã thô토토 báo, khô토토 phải văn bản. Đây là một trườ토토 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ô토토 biết cụm từSupernovae Stars, như토토ts_lexizeThất bại vì nó không phân tích văn bản đầu vào nhưng coi nó là một mã thô토토 báo duy nhất. Sử dụngPlainto_tsqueryhoặcTO_TSVECTORĐể kiểm tra từ điển từ điển, ví dụ:

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

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.