如果我將自然語言查詢發送到Retrieve和Rank(Solr),如果查詢包含冒號,它將返回錯誤。它似乎試圖將冒號之前的單詞解釋爲字段名稱。爲什麼在Retrieve和Rank Solr查詢中不能有冒號?
有沒有什麼辦法可以防止這種情況,還有其他我應該注意的角色嗎?
如果我將自然語言查詢發送到Retrieve和Rank(Solr),如果查詢包含冒號,它將返回錯誤。它似乎試圖將冒號之前的單詞解釋爲字段名稱。爲什麼在Retrieve和Rank Solr查詢中不能有冒號?
有沒有什麼辦法可以防止這種情況,還有其他我應該注意的角色嗎?
您需要處理的字符列表爲http://www.ibm.com/watson/developercloud/doc/retrieve-rank/plugin_query_syntax.shtml - 它位於頁面底部的「保留字符」標題下。 (這也包括如何處理它們)
這些包括:
冒號(:)
在用反斜槓查詢逃逸冒號。雙引號(「)與現場查詢反斜槓查詢
逃生雙引號。反斜線(\)轉義字符
逃生與另一個查詢中的反斜槓反斜槓
如果你的Solr庫沒有爲你自動完成,你必須避開冒號。與大多數其他情況一樣,轉義使用\
,所以foo\:bar
應該可以工作。另一個選項可能是將值包含在引號中(field:"foo:bar"
)。