Chúng tôi đang sử dụng SQL Server 2005 trong một dự án. Người dùng của hệ thống có khả năng tìm kiếm một số đối tượng bằng cách sử dụng 'từ khóa'. Cách chúng tôi thực hiện điều này là tạo danh mục toàn văn cho các cột quan trọng trong mỗi bảng có thể chứa các 'từ khóa' này và sau đó sử dụng CONTAINS để tìm kiếm từ khóa mà người dùng nhập vào hộp tìm kiếm trong chỉ mục đó.Đặt chỉ mục SQL Server số nhỏ
Vì vậy, ví dụ: giả sử bạn có đối tượng Phim và bạn muốn cho phép người dùng tìm kiếm từ khóa trong tiêu đề và nội dung của bài viết, sau đó chúng tôi sẽ lập chỉ mục cả cột Tiêu đề và Lô, sau đó làm điều gì đó như:
SELECT * FROM Movies WHERE CONTAINS(Title, keywords) OR CONTAINS(Plot, keywords)
(Nó thực sự cao cấp hơn một chút hơn thế, nhưng không có gì khủng khiếp phức tạp)
một số người dùng đang thêm số điện thoại để tìm kiếm của họ, ví dụ như vậy họ muốn tìm 'Terminator 2' . Vấn đề ở đây là, theo như tôi biết, bởi SQL mặc định Server sẽ không index lời ngắn, do đó làm một tìm kiếm như thế này:
SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator 2"')
thực sự là tương đương để làm điều này:
SELECT * FROM Movies WHERE CONTAINS(Title, '"Terminator"') <-- notice the missing '2'
và chúng tôi đang nhận được rất nhiều kết quả giả mạo.
Có cách nào để buộc SQL Server lập chỉ mục các từ nhỏ không? Tốt hơn là tôi chỉ muốn chỉ số số như 1, 2, 21, v.v. Tôi không biết xác định tiêu chí lập chỉ mục ở đâu hoặc thậm chí nếu có thể cụ thể như vậy.
Vâng, tôi đã làm điều đó, xóa "từ tiếng ồn" khỏi danh sách và bây giờ hành vi hơi khác một chút, nhưng vẫn không như bạn mong đợi.
Tìm kiếm sẽ không cho "Terminator 2" (Tôi chỉ làm điều này, chủ nhân của tôi có thể không thực sự hạnh phúc nếu tôi tiết lộ những gì chúng tôi đang làm ... dù sao, các điều khoản có một chút khác biệt nhưng nguyên tắc như nhau), tôi không nhận được bất cứ điều gì, nhưng tôi biết có những đối tượng có chứa hai từ.
Có thể tôi đang làm gì đó sai? Tôi đã xóa tất cả các số 1 ... 9 khỏi cấu hình tiếng ồn của mình cho ENG, ENU và NEU (trung tính), tạo lại các chỉ mục và thử tìm kiếm.