Tôi đang cố gắng triển khai chỉ mục tài liệu (tương ứng với hàng DB), trong đó một trong các trường là số nguyên. Tôi bổ sung chúng vào chỉ số như:Làm thế nào để tìm kiếm một trường int trong Lucene 4?
Document doc = new Document();
doc.add(new StringField("ticket_number", rs.getString("ticket_number"),
Field.Store.YES));
doc.add(new IntField("ticket_id", rs.getInt("ticket_id"),
Field.Store.YES));
doc.add(new StringField("id_s", rs.getString("ticket_id"),
Field.Store.YES));
w.addDocument(doc);
Dường như tôi không thể truy vấn các lĩnh vực ticket_id
ở tất cả, trong khi id_s
công trình tốt.
Một trong những tài liệu là (tôi thêm khoảng trắng để có thể đọc):
Document<
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<ticket_number:230114W>
stored<ticket_id:152>
stored,indexed,tokenized,omitNorms,indexOptions=DOCS_ONLY<id_s:152>>
Vì vậy, lĩnh vực int của tôi được lưu trữ, nhưng không lập chỉ mục. Truy vấn này hoạt động như mong đợi: id_s:152
, trong khi truy vấn này không bao giờ trả về bất cứ điều gì: ticket_id:152
.
Tôi đang làm gì sai? Làm thế nào tôi có thể thêm một trường như vậy vào chỉ mục và làm cho nó có thể tìm kiếm được?
Cảm ơn người đàn ông, điều này đã giúp tôi rất nhiều. – SoluableNonagon
Liệu '234' có chỉ ra cùng một phần dữ liệu hay không, nếu vậy tôi không nghĩ rằng quyền lưu trữ nó trong chỉ mục hai lần, một lần như một chuỗi và một lần là một int. –
'234' được lưu trữ với các trường khác nhau (' ticket_id' và 'id_s'). Tôi không thấy bất cứ điều gì sai trái với điều này. Về mặt khái niệm, điều này có thể sai, nhưng mục đích của ví dụ này chỉ là chứng minh cả hai kỹ thuật là có thể. – mindas