Từ điển từ đồng nghĩa

Một phần của tài liệu Tài liệu quản trị postgresql (Trang 328 - 331)

Chương 12. Tìm kiếm toàn văn

12.6.4. Từ điển từ đồng nghĩa

Một từ điển từ đồng nghĩa (đôi khi viết tắt như là TZ) là một tập hợp các từ mà bao gồm thông tin về các mối quan hệ của các từ hoặc các cụm từ, như, các khoản rộng lớn hơn – BT (broader terms), các khoản thu hẹp hơn – NT (narrower terms), các khoản được ưu tiên, các khoản không được ưu tiên, các khoản có liên quan, …

Về cơ bản một từ điển từ đồng nghĩa thay thế cho tất cả các khoản không được ưu tiên bằng một khoản được ưu tiên và, như một tùy chọn, cũng giữ lại các khoản gốc cho việc đánh chỉ số. Triển khai hiện hành của PostgreSQL từ điển từ đồng nghĩa là một sự mở rộng của từ điển đồng nghĩa với sự hỗ trợ các cụm từ được bổ sung thêm vào. Một từ điển từ đồng nghĩa đòi hỏi một tệp cấu hình có định dạng sau:

# this is a comment

sample word(s) : indexed word(s)

more sample word(s) : more indexed word(s) ...

trong đó dấu hai chấm (:) hành động như một dấu ngắt giữa một cụm từ và sự thay thế của nó.

Một từ điển từ đồng nghĩa sử dụng một từ điển con (nó được chỉ định trong cấu hình của từ điển đó) để bình thường hóa văn bản đầu vào trước khi kiểm tra các cụm từ trùng khớp. Chỉ có khả năng để lựa chọn một từ điển con. Một lỗi được nêu nếu từ điển con không nhận biết được một từ. Trong trường hợp đó, bạn nên loại bỏ sử dụng từ đó hoặc dạy cho từ điển con đó về từ đó. Bạn có thể thay thế một dấu sao (*) ở đầu của một từ được đánh chỉ số để bỏ qua việc áp dụng từ điển con đó với nó, nhưng tất cả các từ mẫu phải được biết đối với từ điển con đó.

Từ điển từ đồng nghĩa chọn sự trùng khớp dài nhất nếu có nhiều cụm từ khớp với đầu vào, và các mối liên hệ sẽ bị vỡ bằng việc sử dụng định nghĩa cuối cùng.

Các từ chết đặc biệt được từ điển con thừa nhận không thể được chỉ định; thay vào đó hãy sử dụng dấu hỏi (?) để đánh dấu vị trí nơi mà bất kỳ từ chết nào có thể xuất hiện. Ví dụ, giả thiết rằng a và

the là các từ chết theo từ điển con đó.

? one ? two : swsw

khớp với a one the two và the one a two; cả 2 có thể được thay thế bằng swsw.

Vì một từ điển các từ đồng nghĩa có khả năng nhận biết được các cụm từ mà nó phải nhớ tình trạng của nó và tương tác với trình phân tích. Một từ điển từ đồng nghĩa sử dụng các chỉ định đó để kiểm tra liệu nó có nên điều khiển từ tiếp sau hay dừng sự tích lũy. Từ điển từ đồng nghĩa phải được thiết lập cấu hình một cách thận trọng. Ví dụ, nếu từ điển từ đồng nghĩa được chỉ định để điều khiển chỉ thẻ token asciiword, thì một định nghĩa từ điển từ đồng nghĩa giống như one 7 sẽ không làm việc vì dạng thẻ token uint không được chỉ định cho từ điển từ đồng nghĩa đó.

Chú ý

Các từ điển đồng nghĩa được sử dụng trong quá trình đánh chỉ số nên bất kỳ sự thay đổi nào trong các tham số từ điển từ đồng nghĩa đó đòi hỏi việc đánh chỉ số lại. Đối với hầu hết các dạng từ điển khác, những thay đổi nhỏ như việc thêm hoặc bớt các từ chết không buộc phải đánh chỉ số lại.

12.6.4.1. Cấu hình từ điển từ đồng nghĩa

Để định nghĩa một từ điển từ đồng nghĩa, hãy sử dụng mẫu template thesaurus. Ví dụ:

CREATE TEXT SEARCH DICTIONARY thesaurus_simple ( TEMPLATE = thesaurus,

DictFile = mythesaurus,

Dictionary = pg_catalog.english_stem );

Ở đây:

• thesaurus_simple là tên từ điển mới

• mythesaurus là tên cơ bản của tệp cấu hình từ điển đồng nghĩa. (Tên đầy đủ của nó sẽ là

$SHAREDIR/tsearch_data/mythesaurus.ths, trong đó $SHAREDIR có nghĩa là thư mục dữ liệu được chia sẻ của cài đặt đó).

• pg_catalog.english_stem là từ điển con (ở đây, một cọng bông tuyết tiếng Anh) sẽ sử dụng cho sự bình thường hóa của từ điển đồng nghĩa. Lưu ý rằng từ điển con đó sẽ có cấu hình riêng của nó (ví dụ, các từ chết), nó không được nêu ở đây.

Bây giờ có khả năng để ràng buộc từ điển từ đồng nghĩa thesaurus_simple với các dạng thẻ token mong muốn trong một cấu hình, ví dụ:

ALTER TEXT SEARCH CONFIGURATION russian

ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH thesaurus_simple;

12.6.4.2. Ví dụ về từ điển từ đồng nghĩa

Xem xét một từ điển đồng nghĩa về thiên văn học đơn giản thesaurus_astro, nó bao gồm một số kết hợp từ thiên văn học:

supernovae stars : sn crab nebulae : crab

Bên dưới chúng ta tạo một từ điển và ràng buộc một số dạng thẻ token vào một từ điển đồng nghĩa thiên văn học và cọng tiếng Anh:

CREATE TEXT SEARCH DICTIONARY thesaurus_astro ( TEMPLATE = thesaurus,

DictFile = thesaurus_astro, Dictionary = english_stem );

ALTER TEXT SEARCH CONFIGURATION russian

ALTER MAPPING FOR asciiword, asciihword, hword_asciipart WITH thesaurus_astro, english_stem;

Bây giờ chúng ta có thể thấy cách mà nó làm việc. ts_lexize là không thật hữu dụng cho việc kiểm thử một từ điển đồng nghĩa, vì nó đối xử với đầu vào của nó như một thẻ token duy nhất. Thay vào đó chúng ta có thể sử dụng plainto_tsquery và to_tsvector mà chúng sẽ chia các chuỗi đầu vào của chúng thành nhiều thẻ token:

SELECT plainto_tsquery(’supernova star’);

plainto_tsquery ---

’sn’

SELECT to_tsvector(’supernova star’);

to_tsvector ---

’sn’:1

Theo nguyên tắc, người ta có thể sử dụng to_tsquery nếu bạn đưa vào ngoặc kép đối số:

SELECT to_tsquery(”’supernova star”’);

to_tsquery ---

’sn’

Lưu ý rằng supernova star trùng khớp với supernovae stars trong thesaurus_astro vì chúng ta đã chỉ định từ điển cọng english_stem trong định nghĩa của từ điển từ đồng nghĩa. Cọng đó đã bỏ đi e và s. Để đánh chỉ số các cụm từ gốc cũng như các thay thế, chỉ cần đưa nó vào phần bên tay phải của định nghĩa đó:

supernovae stars : sn supernovae stars SELECT plainto_tsquery(’supernova star’);

plainto_tsquery ---

’sn’ & ’supernova’ & ’star’

Một phần của tài liệu Tài liệu quản trị postgresql (Trang 328 - 331)

Tải bản đầy đủ (PDF)

(372 trang)