Tôi có truy vấn MarkLogic sau đó, khi chạy trong truy vấn giao diện điều khiển, cho phép tôi để lấy những người có đặc quyền quản trị của người sử dụng hệ thống của tôi:Document XPath tìm kiếm với API tìm kiếm Java MarkLogic của vs XQuery/XSLT API
xquery version "1.0-ml";
import schema namespace bfa="http://bitfood.org/auth" at "schema/auth/bitfood-auth.xsd";
cts:search(/bfa:AppUser[bfa:appAccess/@appRole = "ROLE_SYS_ADMIN"], cts:and-query(()))
Tha thứ sự thiếu hiểu biết của tôi, nhưng có thể thực hiện truy vấn này bằng cách sử dụng API ứng dụng khách Java không?
Tôi biết tôi có thể sử dụng truy vấn thô qua XCC nhưng tôi đang cố gắng tránh điều đó càng nhiều càng tốt.
Tôi đã tìm hiểu thông qua tài liệu API của ứng dụng khách Java, thật không may, giao dịch ngắn gọn với các phương pháp tìm kiếm khác và không tìm thấy điều gì có thể ám chỉ rằng điều này là có thể.
CẬP NHẬT 1: Các bạn, tôi nghĩ mình đã từng tham gia showstopper ở đây.
Theo this question, các cơ sở xây dựng Tùy chọn truy vấn của API ứng dụng khách Java được đánh dấu là không dùng nữa.
@ehennum đề xuất giải pháp thay thế sử dụng tùy chọn truy vấn XML hoặc JSON. Tuy nhiên, truy vấn như vậy lựa chọn thông số kỹ thuật là still essentially defined as raw Strings in the code:
String xmlOptions =
"<search:options "+
"xmlns:search='http://marklogic.com/appservices/search'>"+
"<search:constraint name='industry'>"+
"<search:value>"+
"<search:element name='industry' ns=''/>"+
"</search:value>"+
"</search:constraint>"+
"</search:options>";
Cấp, tôi có thể sử dụng JAXB, JDOM, các file hoặc một số công cụ khác để tạo ra XML, nhưng ý kiến cá nhân của tôi là chúng ta vẫn đang phải dùng đến storing queries in resource files in the code, đó là không phải là một điều xấu trong chính nó, nhưng không xem xét cẩn thận có thể dẫn đến những cơn ác mộng bảo trì mã. Hơn nữa, thực tế là các tùy chọn này cần phải được duy trì thông qua REST tại máy chủ sẽ giới thiệu thêm một lớp các vấn đề tiềm năng trong trường hợp điều này là bắt buộc vì các tùy chọn có thể cần phải được đồng bộ hóa với mỗi cá thể cơ sở dữ liệu. một cơ sở mã.
Vì vậy, nếu các nhà phát triển Marklogic đang lắng nghe, tôi nghĩ rằng API khách hàng Java không phải là trưởng thành hoặc được ghi lại như tôi mong đợi.
tôi có hai lựa chọn cho đến nay:
1) Tôi có thể hardcode truy vấn XCC của tôi trong các tập tin String và cố gắng sử dụng placeholders tham số để chèn dữ liệu mà tôi cần và lấy thông qua một phiên XCC. Hoặc là.
2) Xem nếu có bất kỳ tập tin XSD cho namespace http://marklogic.com/appservices/search
và tạo các đối tượng JAXB tĩnh từ họ để xây dựng một số loại "tiêu chí" lớp a la Hibernate hoặc QueryDSL mà, thật đáng buồn Tôi phải nói rằng, đã hỗ trợ một số mức độ MongoDB truy vấn.
Những người thực sự, mang một số phương tiện truy vấn thông thạo như QueryDSL đến Marklogic và loại bỏ điều này Rube Goldberg querying machine.
Cập nhật 2: Dường như điều này có thể được giải quyết trong ML7. Mong cho nó.
Cảm ơn!
Dudes, tại sao bỏ phiếu xuống? Tôi đã không làm nghiên cứu của tôi? Tôi không chứng minh rằng mã tối thiểu là tốt hơn? Sigh ... –