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
kết hợp trong truy vấn, mà còn vào kết quả của việc xử lý ngôn ngữ và hoàn toàn vào cấu hình
của máy chủ văn bản, đặc biệt là các trình phân tích cú pháp và thuật toán tách từ (tokenizer).
Phần này mô tả các khía cạnh về xử lý ngôn ngữ và nó cung cấp các ví dụ về các đặc tính ngôn
ngữ ảnh hưởng đến các kết quả tìm kiếm như thế nào.
Về đầu trang
Các truy vấn tối thiểu
Đối với các truy vấn tối thiểu, các từ tìm kiếm hợp lệ có chứa ít nhất là hai ký tự và chúng không
thể chỉ chứa các dấu chấm câu. Liệt kê 1 hiển thị một ví dụ.
Liệt kê 1. Các ví dụ về các truy vấn tối thiểu hợp lệ
select content from sampleen where contains(plaincol, 'to')=1
select content from sampleen where contains(plaincol, 't*')=1
select content from sampleen where contains(plaincol, 'c#')=1
Về đầu trang
Các ký tự thoát
Các ký tự nào đó có ý nghĩa ngữ nghĩa như là một phần của truy vấn tìm kiếm và chúng cần
được đặt dấu thoát (dấu gạch chéo ngược) nếu chúng được dùng là một phần của một từ tìm
kiếm. Đặt dấu thoát cho các dấu ngoặc kép đơn và đôi bằng cách tăng gấp đôi dấu ngoặc kép,
chẳng hạn như khi dùng Smith''s để tìm kiếm Smith's.
Các ký tự sau đây cần phải được đặt dấu thoát là \ để được xử lý như là một phần của một truy
vấn tìm kiếm.
Các ký hiệu đòi hỏi ký tự thoát để đạt được một truy vấn hợp lệ về cú pháp
< [ { ~ = : > ] }
Các ký hiệu đòi hỏi ký tự thoát để thay đổi ngữ nghĩa học
&& || ! * ? \ -
Các ký tự gây ra các lỗi cú pháp khi dùng riêng và đòi hỏi một ký tự thoát để thay đổi
ngữ nghĩa họ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
5 this is a good story
2 record(s) selected.
Một tìm kiếm với từ better trả về các tài liệu có chứa từ good, better hoặc well, vì tất cả chúng
được liệt kê như là các dạng chính tắc với từ better. Liệt kê 3 hiển thị các kết quả ví dụ về một
tìm kiếm từ khóa với từ better.
Liệt kê 3. Kết quả ví dụ về tìm kiếm từ khóa với từ better
select pk, plaincol from simpleen where contains(plaincol, 'better')=1
PK PLAINCOL
2 it is well done
3 the well is deep
4 it is better here
5 this is a good story
4 record(s) selected.
Để chỉ lấy ra các tài liệu trùng khớp với từ đó, nhưng không lấy ra các tài liệu trùng khớp với các
dạng chính tắc của từ đó, hãy bao bọc từ đó trong hai dấu ngoặc kép. Liệt kê 4 cho thấy kết quả
ví dụ về một tìm kiếm cụm từ với từ better.
Liệt kê 4. Kết quả ví dụ về một tìm kiếm cụm từ với từ better
select pk, plaincol from simpleen where contains(plaincol, '"better"')=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
select pk, plaincol from simpleen where contains(plaincol, 'test')=1
PK PLAINCOL
16 we are testing this tomorrow
13 this cannot be tested properly
14 this is a test program
3 record(s) selected.
Tìm kiếm cụm từ là nửa chính xác và nó loại bỏ các tài liệu chỉ chứa các phiên bản có nhiều biến
cách của từ đó.
Liệt kê 6. Kết quả ví dụ về tìm kiếm cụm từ với từ test loại bỏ các từ có nhiều biến cách
select pk, plaincol from simpleen where contains(plaincol, '"test"')=1
PK PLAINCOL
14 this is a test program
1 record(s) selected.
Tùy thuộc vào ngôn ngữ được định nghĩa để tạo chỉ mục hoặc ngôn ngữ được quy định cho một
truy vấn, một từ có thể được mở rộng trong lúc phân tích. Với một kho dữ liệu từ vựng của tài
liệu ngôn ngữ hỗn hợp, một tài liệu có thể được kèm theo hoặc loại bỏ khỏi kết quả tìm kiếm, tùy
thuộc vào ngôn ngữ được sử dụng để lập chỉ mục hoặc truy vấn. Ví dụ, nếu hai tài liệu tiếng Đức
được bao gồm trong chỉ mục văn bản tiếng Anh và một tài liệu có chứa một biến cách của từ
Regen (mưa), việc phân tích bằng từ điển tiếng Anh không công nhận cách thức sở hữu của từ
Regen, đó là từ des Regens, trong khi chỉ mục của tiếng Đức hiển thị cả hai kết quả. Một tài liệu
hay một phần của một tài liệu không theo ngôn ngữ chỉ mục được xử lý như một tài liệu theo
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
mang trọng âm. Việc tìm kiếm dạng mẫu cơ bản trả về tất cả các biến cách, bao gồm các từ có s,
sở hữu, như trong Liệt kê 9.
Liệt kê 9. Kết quả ví dụ về tìm kiếm từ khóa theo dạng mẫu cơ bản
select pk, plaincol from simpleen where contains(plaincol, 'girl')=1
PK PLAINCOL
130 We are three siblings, all girls
131 The girl's sweater is blue
132 A girl gave me the book.
3 record(s) selected.
Tìm kiếm cách thức có s sở hữu chỉ trả về một sự trùng khớp chính xác, như trong Liệt kê 10.
Liệt kê 10. Kết quả ví dụ về tìm kiếm từ khóa dựa vào từ có các từ không mang trọng âm
select pk, plaincol from simpleen where contains(plaincol, 'girl''s')=1
PK PLAINCOL
131 The girl's sweater is blue
1 record(s) selected.
Một tìm kiếm cụm từ theo s sở hữu chỉ trả về một sự trùng khớp chính xác, như trong Liệt kê 11.
Liệt kê 11. Kết quả ví dụ về tìm kiếm cụm từ dựa vào từ có các từ không mang trọng âm
select pk, plaincol from simpleen where contains(plaincol, '"girl''s"')=1
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
đến could, might, ought, shall, should, will và would.
Các từ hạn định, chẳng hạn như các mạo từ, các đại từ chỉ định hoặc các từ hạn định sở
hữu; không ảnh hưởng đến các từ hạn định phân phối, phân biệt hoặc cấp độ.
Các đại từ (tương tự như các từ hạn định).
Ví dụ, một truy vấn với to be chỉ chứa các từ đệm (các từ phổ biến), vì thể sử dụng các từ đệm
đó để chọn các sự trùng khớp trong tài liệu, như trong Liệt kê 13
Liệt kê 13. Kết quả ví dụ về tìm kiếm từ khóa chỉ dựa vào các từ phổ biến
select pk, plaincol from simpleen where contains(plaincol, 'to be')=1
PK PLAINCOL
1 to be or not to be
1 record(s) selected.
Nhờ việc xử lý các tổ hợp Bun mặc định với các từ đệm, việc so khớp tập trung vào các từ
không-đệm nếu có một tổ hợp các từ đệm và từ không-đệm trong một tìm kiếm. Ví dụ, Liệt kê
14 cho thấy một truy vấn to be or not to be với sự tập trung vào từ không-đệm là not.
Liệt kê 14. Kết quả ví dụ về tìm kiếm từ khóa theo các từ hỗn hợp
select pk, plaincol from simpleen where contains(plaincol, 'be or not to
be')=1
PK PLAINCOL
1 to be or not to be
33 my blog is not here, that's the wrong place
10 I can't rest here
15 he hasn't rested here
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
1 record(s) selected.
Lưu ý rằng để chỉ ra một kết nối Bun, toán tử này phải xuất hiện dưới dạng chữ hoa. or chữ
thường không được xử lý như toán tử Bun OR , not chữ thường cũng không được xử lý như
NOT. Liệt kê 17 hiển thị một ví dụ.
Liệt kê 17. Kết quả ví dụ về tìm kiếm từ khóa với toán tử NOT hiện rõ
select pk, plaincol from simpleen where contains(plaincol, 'be or NOT to
be')=1
PK PLAINCOL
0 record(s) selected.
Về đầu trang
Các ký tự có dấu
Các dấu có các mục đích khác nhau trong các ngôn ngữ khác nhau. Chúng có thể hoặc không thể
tạo ra một chữ cái mới. Liệu một dấu có bị bỏ qua trong một tìm kiếm từ khóa phụ thuộc vào
ngôn ngữ hay không và liệu một ký tự có là một ký tự mới hay không. Ví dụ, trong tiếng Anh,
một tìm kiếm với từ resume đưa ra các tài liệu có chứa từ résumé, như trong Liệt kê 18.
Liệt kê 18. 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 Anh)
select pk, plaincol from simpleen where contains(plaincol, 'resume')=1
PK PLAINCOL
51 let's resume later
50 show me your résumé
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.
select pk, plaincol from simplede where contains(plaincol, 'schön')=1
PK PLAINCOL
102 Das war eine schöne Feier.
1 record(s) selected.
Cách viết một từ tương phản về nguyên âm như ae, oe hoặc ue chỉ ánh xạ tới một sự trùng khớp
tương ứng chính xác mà không cần mở rộng thêm nữa. Cách tìm kiếm này được áp dụng như
một tìm kiếm cụm từ, do đó, không trả về các tài liệu có chứa một biến cách của từ tìm kiếm.
Liệt kê 21. Kết quả ví dụ về tìm kiếm từ khóa có tương phản về nguyên âm mở rộng (Tiếng
Đức)
select pk, plaincol from simplede where contains(plaincol, 'schoene')=1
PK PLAINCOL
102 Das war eine schöne Feier.
1 record(s) selected.
select pk, plaincol from simplede where contains(plaincol, 'schoen')=1
PK PLAINCOL
0 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.
select pk, plaincol from simplede where contains(plaincol, 'laeuft')=1
PK PLAINCOL
52 es läuft gut
1 record(s) selected.
Về đầu trang
Các từ ghép
Hiện nay, các máy chủ văn bản được cấu hình để làm việc mà không cần phân tích. Bạn cần
thêm một ký tự đại diện để tìm ra một tài liệu có chứa từ tìm kiếm là một phần của một từ ghép.
Ví dụ, Liệt kê 23 cho thấy cách tìm ra tất cả các tài liệu có chứa từ rain là phần đầu tiên của một
từ ghép.
Liệt kê 23. Ví dụ về tìm kiếm các từ ghép hay dùng
select pk, plaincol from simpleen where contains(plaincol, 'rain')=1
PK PLAINCOL
0 record(s) selected.
select pk, plaincol from simpleen where contains(plaincol, 'rain*')=1
PK PLAINCOL
41 the production today was interrupted by a rainstorm
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
cùng một đối tượng. Ví dụ, việc tìm kiếm với từ lift (thang máy) không trả về các tài liệu có từ
elevator (thang máy). Tuy nhiên, bạn có thể định nghĩa các từ đó trong một từ điển từ đồng nghĩa
và áp dụng từ điển từ đồng nghĩa cho chỉ mục văn bản.
Về đầu trang
Các chữ viết tắt
Không có sự ánh xạ mặc định của các chữ viết tắt nào như là e.g., EKG và etc. Vì vậy, tìm kiếm
với dạng mẫu viết tắt chỉ trả về các tài liệu có chứa chữ viết tắt đó. Một tìm kiếm với từ đầy đủ
chỉ trả về các tài liệu có chứa từ đầy đủ. Các chữ viết tắt phải được thêm vào một từ điển từ đồng
nghĩa để được ánh xạ tới từ đầy đủ dùng để xử lý chỉ mục và xử lý truy vấn.
Về đầu trang
Dấu chấm câu và các ký hiệu
Với cấu hình hiện tại của máy chủ văn bản, dấu chấm câu và các ký tự ký hiệu phổ biến được
dùng thay thế cho nhau để tìm ra kết quả so khớp. Điều này áp dụng cho các ký tự sau:
. , ; : @ % ^ & ! + - = ( ) [ ] { } < > ~ # $
€
Các quy tắc sau mô tả cách xử lý các ký hiệu trong các truy vấn.
Tập dấu chấm câu và các ký hiệu thay thế cho các thành viên khác của tập này, ngay cả
khi từ tìm kiếm được kèm trong hai dấu ngoặc kép hoặc dấu chấm câu được đặt dấu
thoát, như trong Liệt kê 25.
Liệt kê 25. Ví dụ về sự thay thế của dấu chấm câu và các ký hiệu
select pk, plaincol from simpleen where contains(plaincol, 'c++')=1
PK PLAINCOL
31 we knew C+ and Java
28 she
knows C, and C++ and C#
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
select pk, plaincol from simpleen where contains(plaincol, 'lab')=1
PK PLAINCOL
114 The email-address is
115 The email-address is
2 record(s) selected.
Sự thay thế này chỉ áp dụng cho các từ ở đó dấu chấm câu, ký hiệu hoặc khoảng trắng ở
vị trí giống nhau, như được hiển thị trong Liệt kê 27 và Liệt kê 28.
Liệt kê 27. Ví dụ về sự thay thế đúng vị trí
select pk, plaincol from simpleen where contains(plaincol,
'')=1
PK PLAINCOL
114 The email-address is
115 The email-address is
2 record(s) selected.
Liệt kê 28. Ví dụ về sự thay thế
Sample Data:
50% picked the first answer for question 4 in the multiple-choice test.
This will cost you 3.50$
It was 50-something degrees Fahrenheit.
This will take 50,000.00, at least
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
select pk, plaincol from simpleen where contains(plaincol, 'some*times')=1
PK PLAINCOL
126 it happens sometimes
127 it happens somextimes
2 record(s) selected.
select pk, plaincol from simpleen where contains(plaincol, 'some\*times')=1
PK PLAINCOL
126 it happens sometimes
127 it happens somextimes
2 record(s) selected.
select pk, plaincol from simpleen where contains(plaincol, 'some.times')=1
PK PLAINCOL
125 it happens some*times
124 it happens some.times
2 record(s) selected.