2011-08-29 32 views
8

Dấu gạch chéo có "/" là ký tự dành riêng trong tên trường solr không?Solr Truy vấn không phân tích dấu gạch chéo về phía trước

Tôi đang gặp rắc rối viết một truy vấn Solr loại mà sẽ phân tích cho các lĩnh vực có chứa một dấu gạch chéo "/"

Khi thực hiện một truy vấn http đến máy chủ Solr tôi:

q=*&sort=normal+desc 

Sẽ làm việc nhưng

q=*&sort=with/slash+desc 
q=*&sort=with%2Fslash+desc 

Cả hai không nói "không thể sử dụng FieldCache trên sân multivalued: với"

Mỗi tài liệu solr chứa hai trường int "normal" và "with/slash". Với lược đồ solr của tôi lập chỉ mục các trường như vậy

... 
<field name="normal" type="int" indexed="true" stored="true" required="false" /> 
<field name="with/slash" type="int" indexed="true" stored="true" required="false" /> 
... 

Có cách nào đặc biệt tôi cần mã hóa các dấu gạch chéo về phía trước không? Hoặc có bất kỳ ký tự phân cách nào khác mà tôi có thể sử dụng không? Tôi đã sử dụng '-' và "." cho các mục đích khác.

+2

Đối với thoát ký tự, xin vui lòng kiểm tra http://stackoverflow.com/questions/1133573/solr-sanitizing-query để thoát ký tự Solr và cuộn xuống dưới cùng của http://wiki.apache.org/solr/SolrQuerySyntax để biết cách soạn URL.Hy vọng điều này sẽ giúp – aitchnyu

+0

Cảm ơn các liên kết, tuy nhiên ký tự "/" không nằm trong danh sách các ký tự solr nghi ngờ và mã hóa URL của tôi không phải là vấn đề. FYI, tôi đã quyết định giải quyết vấn đề này bằng cách thay thế/bằng _ trong tên trường của tôi. – Akusete

+0

Doh! Tôi chỉ chạy vào cùng một vấn đề. '/' không có trong danh sách tôi đã kiểm tra các ký tự đặc biệt. Tôi đã thử mã hóa, dấu ngoặc kép, v.v. Không may mắn cho tôi hoặc là = ( – Justin

Trả lời

6

Tôi vừa gặp vấn đề tương tự, và sau khi một số thử nghiệm thấy rằng nếu bạn có dấu gạch chéo ở tên trường, bạn phải thoát nó với dấu gạch chéo ngược trong truy vấn Solr (nhưng lưu ý rằng bạn không phải làm điều này trong tham số danh sách trường, do đó, một tìm kiếm tìm kiếm /my/field/name chứa MY_VALUE ở được nhập trong lĩnh vực "q" như:

\/my\/field\/name:my_value

tôi đã không cố gắng lĩnh vực sắp xếp, nhưng cố gắng này và hãy cho chúng tôi biết :)

Đây là trên S alpha 4.0.0 alpha.

1

Từ wiki Solr tại https://wiki.apache.org/solr/SolrQuerySyntax:

Solr 4.0 thêm hỗ trợ biểu thức chính quy, có nghĩa là '/' bây giờ là một nhân vật đặc biệt và phải được thoát ra nếu tìm kiếm đen dấu gạch chéo.

-1

Trong trường hợp của tôi, tôi cần thiết để tìm kiếm các dấu gạch chéo / với thẻ hoang dã *, ví dụ:

+(*/*) 
+(*2016/17*) 

Tôi cố gắng để thoát khỏi nó như vậy:

+(*2016\/*) 
+(*2016\/17*) 

nhưng điều đó didn' Tôi cũng làm việc.

giải pháp là để bọc các văn bản với dấu nháy kép " như làm:

+("*\/*") 
+("*/*") 

+("*2016\/17*") 
+("*2016/17*") 

cả trả lại kết quả tương tự có và không thoát khỏi dấu gạch chéo

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