Incomplete Leo

Something from my heart

eRec search

Chức năng search trong eRec được chia thành 3 phần : simple search, advance search và custom search.

Toàn bộ code cho chức năng simple search và advance search ở trong class UserDAO

1. Simple search :

– Search đơn giản các field trên GUI tương ứng với các field trong DB, chủ yếu trong 2 table về User và Resume

2. Search advance :

– Bao gồm các field như simple search và thêm 1 phần freetext với các option :

  • search all keyword : có chứa tất cả các TỪ được nhập vào free text, không cần theo thứ tự
  • search any keyword : chứa 1 trong các TỪ được nhập vào free text
  • search exact phrase : search chính các CỤM TỪ được nhập vào freetext

3 option trên được thực hiện trên 3 nguồn dữ liệu :

  1. File attach
  2. Các field của table User hoặc Resume được chỉ định trong file config
  3. Các custom field (hay dynamic field) của resume (table [CandidateResumesAddIn])

1. Search trên file attach :

Thực hiện search tìm kiếm các từ khóa trên file attach của user, sử dụng Index Service của Windows để thực hiện việc tìm kiếm trên nội dung của file. Lớp hỗ trợ : QueryManager được cung cấp bởi Mr. Thái (chief Leader of DMS ;)) ) . Xem query syntax của Indexing service trên Google và file Help về Indexing Service.😀

3 method BuildIndexQueryAllKeywordSearch, BuildIndexQueryAnyKeywordSearch, BuildIndexQueryExactKeywordSearch dùng để build 3 câu query tương ứng với 3 option search ở trên.

Kết quả search này là danh sách các file, từ danh sách các file đó, lấy ra được danh sách user id là owner của các file này dựa vào cơ chế đặt tên theo id của các folder và file đã upload.

2. Các field của table User hoặc Resume được chỉ định trong file config :

BuildAllKeywordsQuery, BuildAnyKeywordsQuery, BuildExactKeywordsQuery là 3 method build 3 câu query tương ứng với 3 option search.

3. Các custom field (hay dynamic field) của resume : câu queryđược build tương tự (2.), nhưng dành cho các custom fiel.

Phần trên là mô tả cách search của mỗi nguồn dữ liệu.

Tiếp theo là cách tiến hành search : Do build câu query động trên code C#, nên bị hạn chế về chiều dài tối đa của param khi truyền xuống store ( chi sủ dụng được nvarchar với max là 4000). Giải pháp là split câu query ra thành nhiều đoạn nhỏ, execute vào 1 bảng tạm, lần lượt cho đến hết. Khi exec xong hết, tiến hành sort trên bảng tạm, rồi paging để trả dữ liệu về. Phần query được split là chuỗi user id có từ (1.). Các câu query được build ra từ (2) và (3) được giữ nguyên và truyền vào spCandidateResumesGetListSearch_ToTable cùng với phần id được split ra. Exec store lặp lại cho đến hết chuỗi user Id. Bảng tạm sẽ chứa đầy đủ kết quả search.

Hàm search chính : SearchCandidateByCriteria , hàm này sẽ rẽ nhánh dựa vào các parameter được truyền vào.

Trên đây là khẩu quyết của 2 bộ võ công tâm pháp thượng thừa mang tên “simple search” và “advance search”. Yêu cầu luyện từng cấp, không được ham đua đòi mà nhảy cấp mà tẩu hỏa nhập ma. Sau khi đã luyện thành 2 bộ tâm pháp này, hãy sang Belgium thọ giáo sư phụ Di Trương bộ tâm pháp còn lại, “custom search”, mức độ khủng khiếp và kinh hoàng không kém gì “advance search”. Luyện xong 3 bộ võ công này xong có thể chịu được Gil BEST được khoảng 100 hiệp😀. Tiếp tục luyện bộ “Thái cực tâm pháp” là có thể xuống núi pyco😀 . Khẩu quyết bộ võ công này có thể hỏi bác Tuấn, panda có thể chỉ dẫn thêm hoặc giới thiệu sang đệ tử xuất sắc nhất các đời chưởng môn : Mrs Huyền.

Tháng Một 25, 2007 - Posted by | Technical, Uncategorized

1 Phản hồi »

  1. Mình cũng làm chức năng Search như bạn mô phỏng, mình dùng Full Text Search trong SQL@2K. Tuy nhiên bị mắt một số lỗi chỗ keywords mà chưa khác phục được
    VD:
    Declare @keywords nvarchar(300)
    set @keywords=N'”Giám đốc”‘
    Select rs.* from Resume rs
    where contains(JobTitle,@keywords)
    => trường hơp này được
    Tuy nhiên nếu người dùng nhập vào những ký tự “, ‘, not,”””…một cách lung tung thì bị mắt lỗi
    Mình muốn hỏi có những chiêu gì để bắt lỗi người dùng nhập những ký tự đặc biệt hay nhập lung tung vào keywords ko?
    Mới tìm hiểu về SQL nên kiến thức còn hạn chế, mong các bạn chỉ giáo..Many thanks🙂

    Phản hồi bởi Nguyễn Sơn | Tháng Năm 29, 2008 | Trả lời


Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: