我們在我們的架構中存儲了一個路徑,以斜槓分隔,並且它也以斜槓開始。根據this post solr在查詢開始時將斜槓解釋爲版本4.0之後的正則表達式表達式,這意味着我們需要跳過斜槓。你可以在spring-data-solr中修改字符轉義嗎?
但SolrTemplate.queryForPage(Query, Class)不會跳過斜槓,所以自然的解決方法是使用上面鏈接中建議的QueryParser.escape(searchTerm)。
然而,這將增加backslashe逃跑的斜線,以及反斜線將SolrTemplate進行轉義,導致查詢轉義反斜槓 - 這給沒有結果
我會添加一對夫婦爲了清楚示例:
查詢不發生任何轉義:
q=paths:/myrootpath&start=0&rows=10
查詢與斜線的手動轉義(QueryParser.escape(String)):
q=paths:\\/myrootpath&start=0&rows=10
查詢我需要:
q=paths:\/myrootpath&start=0&rows=10
我不知道這是否是一個錯誤或意圖,因爲據我所知,前期4.0 Solr的也沒必要逃避斜線
那麼在spring-data-solr中有辦法禁用查詢的字符轉義,或修改哪些字符被轉義?
我米有同樣的問題。你有沒有找到解決方案? – tlavarea
@tlavarea我很抱歉,但我沒有找到解決方案,但是在後來的版本中可能會有這種可能性,因爲我從事該項目已有近一年的時間。無論如何,我認爲它一定是一個錯誤。作爲解決方法,我將斜槓轉換爲/從分號轉換爲 –
這是一個很好的解決方案。我base64編碼我的路徑,然後編寫一個自定義solr轉換器解碼/編碼適當。 – tlavarea