Tôi có một cột văn bản chứa các từ khác nhau đã được rút ngắn thành chữ viết tắt. Ví dụ: thay vì "bảo hiểm", cột có thể chứa "insd". Tôi hiểu rằng tôi có thể sử dụng tệp từ điển đồng nghĩa để tạo danh sách các từ đồng nghĩa, cho phép tìm kiếm "insd" một cách hiệu quả để trả về các hàng có chứa cả "bảo hiểm" và "insd". Hoàn hảo.
Tuy nhiên, một số chữ viết tắt khác trong cột chứa các ký tự "đặc biệt", như dấu gạch chéo hoặc ký hiệu, chẳng hạn như:
t / p - bên thứ ba o / s - mặt khác p / p - mỗi người i & o - từ trong ra ngoài
Có một số cách tôi có thể thực hiện CONTAINS
hoặc FREETEXT
hiểu các truy vấn có chứa những từ này? Ví dụ:
SELECT *
FROM dbo.MyTable
WHERE FREETEXT(MyColumn, 't/p');
Tôi đã tạo tệp từ điển đồng nghĩa, tsenu.xml
ở vị trí chính xác, ví dụ:
<XML ID = "Từ điển tìm kiếm Microsoft"> <thesaurus xmlns = "x-giản đồ: tsSchema.xml"> <diacritics_sensitive> 0 </ diacritics_sensitive> <mở rộng> <phụ> bảo hiểm </ phụ> <sub> insd </ sub> </ mở rộng> <mở rộng> <phụ> t / p </ phụ> <phụ> bên thứ ba </ phụ> </ mở rộng> <mở rộng> <phụ> o / s </ phụ> <phụ> bên kia </ phụ> </ mở rộng> <mở rộng> <phụ> p / p </ phụ> <phụ> mỗi người </ phụ> </ mở rộng> </ thesaurus> </ XML>
Và tải nó bằng cách sử dụng EXEC sys.sp_fulltext_load_thesaurus_file 1033;
, tuy nhiên truy vấn trả về kết quả không thể đoán trước.
LIKE
toán tử: support.microsoft.com/en-us/help/200043/