2010-03-26 30 views
8

Khi tôi sử dụng Luke để tìm kiếm chỉ mục Lucene của tôi bằng máy phân tích chuẩn, tôi có thể thấy trường tôi đang tìm kiếm chứa các giá trị của biểu mẫu MY_VALUE. Tuy nhiên, khi tôi tìm kiếm trường: "MY_VALUE", truy vấn được phân tích thành trường: "giá trị của tôi"Tìm kiếm và gạch dưới Lucene

Có cách nào đơn giản để thoát ký tự gạch dưới (_) để nó tìm kiếm không?

EDIT:

4/1/2010 11:08 AM PST

Tôi nghĩ rằng có một lỗi trong tokenizer cho Lucene 2.9.1 và có lẽ họ đã có trước đó. Tải lên Luke và cố gắng tìm kiếm cho "BB_HHH_FFFF5_SSSS", khi có một số, các thẻ sau đây được trả về:

"bb hhh_ffff5_ssss"

Sau một số thử nghiệm, tôi đã phát hiện ra rằng điều này là do con số. Nếu tôi đầu vào

"BB_HHH_FFFF_SSSS", tôi nhận được

"bb hhh ffff ssss"

Tại thời điểm này, tôi nghiêng về phía một lỗi tokenizer trừ sự hiện diện của số lượng được cho là có điều này nhưng tôi không hiểu tại sao.

Có ai có thể xác nhận điều này không?

Trả lời

1

Có vẻ như bạn đã sử dụng StandardAnalyzer để lập chỉ mục trường đó. Trong Lu-ca, bạn cần phải chọn trình phân tích mà bạn đã sử dụng để lập chỉ mục trường đó để khớp chính xác với MY_VALUE.

Ngẫu nhiên, bạn có thể khớp với MY_VALUE bằng cách sử dụng KeywordAnalyzer.

+0

Không, tôi đã sử dụng trình phân tích tiêu chuẩn làm người lập chỉ mục, đó là lý do tại sao điều này thật lạ. – Matt

+3

Nếu bạn đã lập chỉ mục bằng Trình phân tích chuẩn thì chỉ mục của bạn sẽ chứa "giá trị" và "giá trị" của tôi dưới dạng hai mã thông báo khác nhau. Hãy thử tìm kiếm "giá trị của tôi" (bao gồm cả dấu ngoặc kép) và bạn có thể nhận được kết quả. – Thomas

+0

Tôi sẽ kiểm tra kỹ xem bạn đang sử dụng trình phân tích nào để lập chỉ mục. Nếu bạn đã sử dụng StandardAnalyzer để lập chỉ mục, thì không thể có MY_VALUE như một thuật ngữ, vì StandardAnalyzer luôn tách trên dấu gạch dưới. – bajafresh4life

1

Tôi không nghĩ rằng bạn sẽ có thể sử dụng trình phân tích chuẩn cho trường hợp sử dụng này.

Đánh giá những gì tôi nghĩ rằng yêu cầu của bạn là, trình phân tích từ khóa sẽ hoạt động tốt cho ít nỗ lực (toàn bộ trường trở thành một thuật ngữ).

Tôi nghĩ rằng một số sự nhầm lẫn phát sinh khi nhìn vào trường bằng luke. Giá trị được lưu trữ là không phải là những gì được sử dụng bởi truy vấn, những gì bạn cần là các điều khoản. Tôi nghi ngờ rằng khi bạn nhìn vào các điều khoản được lưu trữ cho lĩnh vực của bạn, họ sẽ là "của tôi" và "giá trị".

Hy vọng điều này sẽ giúp,

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