2009-12-30 28 views
5

Tôi có một số tài liệu có chứa các chuỗi như radio/tested mà tôi muốn trả lại hit trong các truy vấn nhưVô hiệu hóa PostgreSQL 8.4 tsvector phân tích cú pháp của 'file` thẻ loại

select * from doc 
where to_tsvector('english',body) @@ to_tsvector('english','radio') 

Thật không may, phân tích cú pháp mặc định mất radio/tested như một file mã thông báo (mặc dù đang ở trong môi trường Windows), vì vậy nó không khớp với truy vấn trên. Khi tôi chạy ts_debug trên đó, đó là khi tôi thấy rằng nó được nhận dạng dưới dạng tệp và từ lexeme kết thúc là radio/tested thay vì hai từ ngữ radiotest.

Có cách nào để định cấu hình trình phân tích cú pháp không tìm kiếm mã thông báo file không? Tôi đã thử

ALTER TEXT SEARCH CONFIGURATION public.english 
    DROP MAPPING FOR file; 

... nhưng nó không thay đổi đầu ra của ts_debug. Nếu có một số cách vô hiệu hóa file hoặc ít nhất nó nhận ra cả hai file và tất cả các từ mà nó nghĩ là tạo nên tên thư mục trên đường đi hoặc nếu có cách để xử lý dấu gạch chéo làm dấu gạch ngang hoặc dấu cách (không có hiệu suất hit của regexp_replace ing chúng bản thân mình) mà sẽ thực sự hữu ích.

Trả lời

5

Tôi nghĩ cách duy nhất để làm những gì bạn muốn là tạo trình phân tích cú pháp của riêng bạn :-(Sao chép wparser_def.c vào tệp mới, xóa khỏi bảng phân tích cú pháp (actionTPS_Base và các mục sau nó) file (TPS_InFileFirst, TPS_InFileNext vv), và bạn nên được thiết lập. tôi nghĩ rằng những khó khăn chính là làm cho các mô-đun phù hợp với C ngữ của PostgreSQL (PG_FUNCTION_INFO_V1 và vân vân). có một cái nhìn tại contrib/test_parser/ cho một ví dụ.

+0

Ôi trời. Cảm ơn bạn đã trả lời và cho những lời khuyên, tôi vui mừng khi biết những gì nó liên quan đến. – Kev

Các vấn đề liên quan