Tìm kiếm văn bản của DB2, Phần 2: Tìm hiểu về xử
lý ngôn ngữ để tìm kiếm toàn văn bản trong DB2
Giới thiệu
Tìm kiếm văn bản của DB2 cho phép tìm kiếm toàn văn bản trên dữ liệu có cấu trúc và không có
cấu trúc được lưu trữ trong một cơ sở dữ liệu DB2. Nó dùng xử lý ngôn ngữ để xác định tập kết
quả của một truy vấn tìm kiếm toàn văn bản. Tìm kiếm văn bản của DB2 có sẵn trên Bản vá lỗi 1
của Phiên bản 9.5 của DB2 cho Linux®, UNIX® và Windows® (DB2 for Linux®, UNIX®, and
Windows®, Version 9.5 Fixpack 1) và mới hơn.
Có thể tạo ra các chỉ mục văn bản dựa trên một loạt các kiểu dữ liệu từ các VARCHAR nhỏ đến
các BLOB lớn có chứa các đối tượng văn bản. Trong bối cảnh về xử lý chỉ mục của Tìm kiếm
văn bản của DB2, với mỗi hàng, nội dung của mỗi cột được xử lý như một tài liệu. Tùy thuộc
vào kiểu tài liệu, được định nghĩa theo định dạng chỉ mục văn bản, các trình xử lý tiếp nhận và
các trình phân tích cú pháp khác nhau được sử dụng để trích xuất và lọc văn bản.
Ví dụ, một tài liệu XML có thể được tạo chỉ mục hoặc theo định dạng XML hay theo định dạng
TEXT (văn bản). Nếu dùng định dạng XML, một trình phân tích cú pháp XML sẽ được sử dụng
để phân tích cú pháp và tạo chỉ mục tài liệu và cả hai cú pháp truy vấn SQL và cú pháp giống
như-XPath có thể được sử dụng để truy vấn. Trong trường hợp này, có thể sử dụng các phần tử
cấu trúc để xác định phần văn bản cần được tìm kiếm, nhưng chính các phần tử cấu trúc lại
không phải là một phần thân văn bản có thể tìm kiếm được. Mặt khác, với định dạng TEXT, một
trình phân tích cú pháp văn bản-thuần được sử dụng để phân tích và tạo chỉ mục tài liệu. Trong
trường hợp này, các phần tử cấu trúc được coi là một phần thân văn bản có thể tìm kiếm được và
chỉ có cú pháp truy vấn SQL được áp dụng. Hình 1 cho thấy luồng công việc cơ bản.
Hình 1. Các bước xử lý
Tìm kiếm văn bản của DB2 phụ thuộc vào IBM LanguageWare để phân tích từ vựng. Tìm kiếm
văn bản của DB2 sử dụng một cách tiếp cận dựa trên-từ điển cho các ngôn ngữ được hỗ trợ. Còn
với các ngôn ngữ khác nó sử dụng một cách tiếp cận xử lý-ký tự và xử lý-từ (không phân tích
hình thái học). Các từ tìm kiếm trong một truy vấn tìm kiếm toàn văn bản được phân tích tương
tự như việc phân tích được thực hiện trong quá trình tạo chỉ mục. Liệu một tài liệu có được trả về
như là một phần của tập kết quả hay không phụ thuộc không chỉ vào các từ và cách chúng được
( ) " “
Về đầu trang
Tìm gốc của từ và các dạng chính tắc của từ (lemmas)
Tìm gốc của từ là quá trình tìm kiếm một phần không đổi của một từ, đó là đoạn từ vẫn giữ
nguyên không thay đổi bất kể thì hay cách thức của từ được sử dụng. Đoạn từ này không nhất
thiết phải là gốc hình thái học. Ví dụ:
Gốc với cả hai từ produce và production là produc.
Gốc với từ good là good.
Gốc với từ better là better.
Dạng chính tắc hóa của từ (lemmatization) là quá trình xác định dạng mẫu không biến cách, cơ
bản của một từ. Trong khi xử lý cập nhật chỉ mục, việc phân tích từ vựng xác định các dạng
chính tắc của các từ trong tài liệu và sự phân tích bổ sung thêm thông tin này vào chỉ mục văn
bản. Vì lẽ đó, với một tìm kiếm từ khóa, các dạng chính tắc của từ tìm kiếm được xác định và tất
cả các tài liệu có chứa dạng chính tắc của từ đó được trả về. Ví dụ:
Dạng chính tắc với từ good là good (tốt).
Các dạng chính tắc với từ better là better (tốt hơn), good (tốt) và well (tốt).
Dạng chính tắc với từ well là well.
Lưu ý sự khác nhau giữa kết quả về tìm gốc của từ và dạng chính tắc hóa của từ với từ better.
Một tìm kiếm với từ good dựa trên dạng chính tắc hóa của từ trả về các tài liệu trùng khớp với từ
good hoặc từ better, vì từ good được trùng khớp với chính từ good, và từ good được trùng khớp
với sự xuất hiện của dạng chính tắc của từ good có liên quan với từ better. Liệt kê 2 hiển thị kết
quả ví dụ về một tìm kiếm từ khóa với từ good.
Liệt kê 2. Kết quả ví dụ về tìm kiếm từ khóa với từ good
select pk, substr(plaincol,1,68) from simpleen where contains(plaincol,
'good')=1
PK PLAINCOL
4 it is better here
1 record(s) selected.
Việc bao bọc từ đó trong hai dấu ngoặc kép loại bỏ các biến thể của từ này và loại bỏ các từ đồng
nghĩa và các từ khác có dạng chính tắc tương tự. Tuy nhiên, việc tìm kiếm có phân biệt chữ hoa,
chữ thường và một số tiêu chuẩn hóa được áp dụng (xem phần Các dấu và Dấu chấm câu). Các
tài liệu có thể được trả về mà không trùng khớp chính xác với các ký tự quy định, như thể hiện
trong Bảng 1.
Bảng 1. Bảng hiển thị ví dụ về hành vi tiêu chuẩn hóa
Một tìm kiếm các từ n
ày
Cũng trả về các tài liệu có chứa các từ này
Hamlet hamlet
resume résumé
C++ C#
Việc mở rộng tìm kiếm với các dạng chính tắc của từ được áp dụng cho từ tìm kiếm trực tiếp,
không phải theo cách đệ quy. Ví dụ, từ good là một dạng chính tắc của từ good và từ better, do
đó việc tìm kiếm từ khóa trả về các tài liệu có chứa một trong hai từ này đều được. Tuy nhiên,
tìm kiếm từ khóa không kèm theo các tài liệu chỉ chứa các từ có các dạng chính tắc khác của từ
better, do đó các tài liệu có chứa từ well không được đưa vào.
Về đầu trang
Biến cách của động từ và biến cách của danh từ, tính từ và đại từ
Thông qua việc xác định các dạng chính tắc của từ, các biến cách của các danh từ, các đại từ, các
tính từ, cũng như biến cách của động từ (chia động từ), được công nhận. Các tài liệu có chứa các
biến thể như vậy được trả về trong một tìm kiếm từ khóa. Ví dụ, từ ran và từ running được trả về
với từ run; và từ testing và từ tested được trả về với từ test, như trong Liệt kê 5.
Liệt kê 5. Kết quả ví dụ về tìm kiếm từ khóa với từ test kèm theo các từ có nhiều biến cách
ngôn ngữ không được hỗ trợ, trừ khi bắt gặp một từ là một phần trong từ điển, trong trường hợp
đó từ này sẽ được xử lý theo các quy tắc của tập ngôn ngữ với chỉ mục. Liệt kê 7 hiển thị kết quả
theo chỉ mục tiếng Anh.
Liệt kê 7. Kết quả ví dụ về tìm kiếm từ khóa với từ regen theo chỉ mục tiếng Anh
select pk, plaincol from simpleen where contains(plaincol, 'regen')=1
PK PLAINCOL 56 der Sturm brachte Regen mit taubeneigroßen Hagelkörnern
1 record(s) selected.
Liệt kê 8 hiển thị các kết quả theo chỉ mục tiếng Đức.
Liệt kê 8. Kết quả ví dụ về tìm kiếm từ khóa regen theo chỉ mục tiếng Đức
select pk, plaincol from simplede where contains(plaincol, 'regen')=1
PK PLAINCOL
54 wegen des Regens wurde die Freilichtaufführung abgesagt
56 der Sturm brachte Regen mit taubeneigroßen Hagelkörnern
2 record(s) selected.
Về đầu trang
Các từ không mang trọng âm
Về ngữ pháp các từ không mang trọng âm là độc lập, nhưng là các hình vị, phụ thuộc theo âm vị,
chẳng hạn như s sở hữu trong tiếng Anh. Việc xử lý ngôn ngữ chia tách từ đó theo từ không
PK PLAINCOL
131 The girl's sweater is blue
1 record(s) selected.
Lưu ý rằng vì từ không mang trọng âm này chia tách từ thành các đoạn, nên tài liệu có chứa từ
"girl"s" (của cô gái) được trả về với một tìm kiếm cụm từ theo dạng mẫu cơ bản. Liệt kê 12 cho
thấy một ví dụ về tìm kiếm cụm từ theo từ cơ bản.
Liệt kê 12. Kết quả ví dụ về tìm kiếm cụm từ theo từ cơ bản
select pk, plaincol from simpleen where contains(plaincol, '"girl"')=1
PK PLAINCOL
131 The girl's sweater is blue
132 A girl gave me the book.
2 record(s) selected.
Về đầu trang
Các từ đệm hoặc các từ quá phổ biến
Các từ nào đó có trong chỉ mục văn bản, nhưng có thể không cần so khớp chúng khi chúng được
gắn với các từ khác. Vì thế, việc đưa các từ này vào so khớp có lẽ cần một sự tuân thủ rõ ràng
như một từ bắt buộc hoặc cần một sự kết hợp với một toán tử Bun. Điều này áp dụng cho cả tìm
kiếm từ khóa lần tìm kiếm cụm từ. Các từ đệm này chủ yếu là một tập con các phần tử của các
kiểu sau đây:
Một số các giới từ, chẳng hạn như in và on
Các liên từ kết hợp, trừ các bộ nối câu yet và so.
Một số trợ động từ, chẳng hạn như can, may, has, am, were, và are; không ảnh hưởng
4 record(s) selected.
Trong trường hợp này, tập kết quả có chứa các phần tử chỉ thực hiện một phần hoạt động AND
của toán tử Bun ngầm định. Lưu ý rằng một tìm kiếm cụm từ (bao bọc các từ tìm kiếm trong hai
dấu ngoặc kép) trả về các kết quả tương tự. Để có được một sự trùng khớp hơn nữa cho các
trường hợp này, hãy sử dụng hoặc là toán tử bắt buộc (+) hoặc một toán tử Bun (AND) hiện rõ
trong tìm kiếm từ khóa. Sự khác biệt giữa + và toán tử AND chỉ liên quan đến loại bỏ các từ
đồng nghĩa. Ví dụ, Liệt kê 15 có chứa một từ be trong kết quả tìm kiếm.
Liệt kê 15. Kết quả ví dụ về tìm kiếm từ khóa bằng toán tử bắt buộc
select pk, plaincol from simpleen where contains(plaincol, 'to +be or not to
be')=1
PK PLAINCOL
1 to be or not to be
1 record(s) selected.
Liệt kê 16 cho thấy tìm kiếm tương tự với một toán tử AND hiện rõ.
Liệt kê 16. Kết quả ví dụ về tìm kiếm từ khóa với toán tử AND hiện rõ
select pk, plaincol from simpleen where contains(plaincol, 'to AND be or not
to be')=1
PK PLAINCOL
1 to be or not to be
2 record(s) selected.
Các dấu tạo ra các chữ cái mới phân biệt được. Một tìm kiếm với từ schon theo một chỉ mục
tiếng Đức không trả về các kết quả tương tự như một tìm kiếm với từ schöne, trong khi tìm kiếm
với từ cafe trả về các kết quả có từ café, như trong Liệt kê 19.
Liệt kê 19. Kết quả ví dụ về tìm kiếm từ khóa liên quan đến các ký tự có dấu không phân
biệt được. (Tiếng Đức)
select pk, plaincol from simplede where contains(plaincol, 'cafe')=1
PK PLAINCOL
55 wir liefen stattdessen ins Café und setzten uns an ein freies
Tischchen
1 record(s) selected.
Các dấu trên a, o hoặc u tạo ra một chữ cái mới. Do đó, các kết quả tìm kiếm chỉ chứa các mục
nhập có một ký tự trùng khớp, như trong Liệt kê 20.
Liệt kê 20. Kết quả ví dụ về tìm kiếm từ khóa liên quan đến các ký tự có dấu phân biệt
được. (Tiếng Đức)
select pk, plaincol from simplede where contains(plaincol, 'schon')=1
PK PLAINCOL
100 Ist es schon soweit?
1 record(s) selected.
Liệt kê 22 cho thấy từ laufen và läuft trả về các kết quả giống nhau, trong khi từ laeuft thay đổi
cách viết được ánh xạ tới từ läuft viết đúng, nhưng không ánh xạ tới các biến cách khác.
Liệt kê 22. Kết quả ví dụ về tìm kiếm có sự tương phản về nguyên âm (dấu hai chấm trên
nguyên âm)
select pk, plaincol from simplede where contains(plaincol, 'laufen')=1
PK PLAINCOL 50 heute war ein wunderschöner Tag voll Sonnenschein, es lief gut
52 es läuft gut
53 nach dem Lauf lass uns Kaffee trinken gehen
55 wir liefen stattdessen ins Café und setzten uns an ein freies
Tischchen
4 record(s) selected.
select pk, plaincol from simplede where contains(plaincol, 'läuft')=1
PK PLAINCOL
50 heute war ein wunderschöner Tag voll Sonnenschein, es lief gut
52 es läuft gut
53 nach dem Lauf lass uns Kaffee trinken gehen
55 wir liefen stattdessen ins Café und setzten uns an ein freies
Tischchen
4 record(s) selected.
1 record(s) selected.
Về đầu trang
Các biến thể của ngôn ngữ
Việc xử lý ngôn ngữ áp dụng tiêu chuẩn hóa viết chính tả. Một tìm kiếm với từ color (màu sắc)
trả về các tài liệu có từ color và colour, đều đúng với cả tìm kiếm từ khóa lẫn tìm kiếm cụm từ.
Liệt kê 24. Kết quả ví dụ về tìm kiếm từ khóa hiển thị các biến thể của ngôn ngữ
select pk, plaincol from simpleen where contains(plaincol, 'color')=1
PK PLAINCOL
110 This is a nice color.
111 I prefer this colour.
2 record(s) selected. select pk, plaincol from simpleen where contains(plaincol, 'colour')=1
PK PLAINCOL
110 This is a nice color.
111 I prefer this colour.
2 record(s) selected.
Sự tiêu chuẩn hóa áp dụng cho các biến thể viết chính tả. Tuy nhiên, ví dụ, không có ánh xạ tự
động nào khi một từ khác nhau được sử dụng theo tiếng Anh Anh hoặc tiếng Anh Mỹ để xem xét
29 he knows C++
30 they know C++ and C#
4 record(s) selected.
select pk, plaincol from simpleen where contains(plaincol, '"c#"')=1
PK PLAINCOL 31 we knew C+ and Java
28 s
he knows C, and C++ and C#
29 he knows C++
30 they know C++ and C#
4 record(s) selected.
Các ký tự dấu chấm câu phân chia từ tìm kiếm thành các đoạn có thể tìm kiếm được riêng
biệt, như trong Liệt kê 26.
Liệt kê 26. Ví dụ về phân đoạn qua dấu chấm câu
Example Data:
114 The email-address is
115 The email-address is
116 The email-address is
Take a turn left to I-50.
about 3,50 or so
About 5000 people watched the game.select pk, plaincol from simpleen where contains(plaincol, '50%')=1
PK PLAINCOL
117 50% picked the first answer for question 4 in the multiple-choice
test.
118 This will cost you 3.50$
119 It was 50-something degrees Fahrenheit.
120 This will take 50,000.00, at least
121 Take a turn left to I-50.
122 about 3,50 or so
6 record(s) selected.
Trong trường hợp này, ký tự % thay thế các ký tự chấm dấu câu và khoảng trắng khác.
Không thể dùng các ký tự đại diện để thay thế dấu chấm câu, ngay cả khi đã đặt dấu thoát
(với tìm kiếm từ khóa và tìm kiếm cụm từ), như trong Liệt kê 29.
Liệt kê 29. Ví dụ ở đây các ký tự đại diện không thay thế được dấu chấm câu
Sample Data
125 it happens some*times
124 it happens some.times
126 it happens sometimes
127 it happens somextimes