2017-05-04 124 views
0
替換空格

我正在使用的應用程序使用solr來索引和搜索條目。我一直在閱讀關於背後的邏輯和語法的一些內容。目前有一些代碼讓我困惑,我希望有人能夠清楚爲什麼編寫這段代碼的人以他們的方式沒有。Solr查詢:用+

trimmedSearchField = SolrQueryUtil.escapeQueryString(trimmedSearchField).replaceAll("\\s+", "+"); 
      String qString = "+(title:" + trimmedSearchField + "^100 OR description_t:" + trimmedSearchField + "^10 " + 
        "OR +" + trimmedSearchField +"^1)"; 

我只是想使人們關注.replaceAll方法,我們爲什麼還要用+來代替空白?我的目標是重構一下搜索欄,並獲得更好的結果,省略replaceAll調用。

示例:兩個元素的描述分別爲「特洛伊海倫」和「特洛伊海倫」。隨着replaceAll目前,搜索「特洛伊海倫」將只提供我第一個元素,與replaceAll刪除,都會出現(這是我想要發生的)

回答

1

.replaceAll()調用只是編碼任何系列連續的空格成一個單一的「+」,這意味着lucene syntax (and Solr)

「必要」,因此它使得「trimmedSearchField」在這些領域強制性的。

+0

事情是,這不是通過一個URL傳遞,它被傳遞給solrj,現在我們有布爾運算符附加到每個單詞。 – user3221287

+0

杜,編輯答案 – Persimmonium