Chữ viết tắt trong chỉ mục tìm kiếm toàn văn


7

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 CONTAINShoặc FREETEXThiể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.


Năm 2013, Paul White dường như chỉ ra một câu trả lời thiếu thỏa mãn cho một câu hỏi tương tự. Thật không may, tôi không thể nghĩ ra bất kỳ cải tiến nào gần đây sẽ thay đổi điều này. Khi giải quyết vấn đề, bạn có thể thử bóc các ký tự trong một cột riêng để tìm kiếm, nhưng tôi tưởng tượng điều đó có thể khá lộn xộn trong thời gian dài.
LowlyDBA

@LowlyDBA - hah, tôi thậm chí đã bỏ phiếu để đóng câu hỏi đó. Cảm ơn!
Max Vernon

Điều này nói về cách tiếp cận là tốt.
Max Vernon

Cách giải quyết từ MS là sử dụng LIKEtoán tử: support.microsoft.com/en-us/help/200043/
mẹo

Câu trả lời:


4

Khi bạn muốn thêm các từ liên quan đến các ký tự đặc biệt mà bạn muốn được coi là một từ đơn, bạn sẽ muốn tạo một từ điển tùy chỉnh.

Tạo từ điển tùy chỉnh cho các thuật ngữ đặc biệt được lập chỉ mục 'nguyên trạng' trong Chỉ mục toàn văn bản của SQL Server 2008

Xin lưu ý rằng từ điển tùy chỉnh bị giới hạn về kích thước, cộng với từ điển càng lớn thì fulltext càng chậm.

Từ điển tùy chỉnh rất tuyệt vời khi bạn có một bộ từ giới hạn để thêm vào như AT & T hoặc M & Ms, đó là những từ có các ký tự đặc biệt có thể được sử dụng nhiều lần mà bạn muốn được coi là một từ thay vì hành vi ngắt từ mặc định.

Từ điển tùy chỉnh không phù hợp với các từ như số phần (ví dụ: JY-14562, PTW-14432, v.v.) trong đó mỗi hàng trong bảng sẽ dẫn đến một mục mới trong từ điển tùy chỉnh. Bạn có khả năng có thể có vài trăm nghìn hoặc nhiều số phần duy nhất. Đó sẽ không phải là một cách sử dụng tốt cho từ điển tùy chỉnh. Nếu bạn cần loại hành vi này, tốt hơn hết bạn nên viết công cụ ngắt từ của riêng bạn. Tạo trình ngắt từ không phải là tài liệu tốt cũng không dễ tạo, nhưng nó cho phép bạn quyết định cách bạn muốn từ bị hỏng khi gặp các ký tự đặc biệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.