2016-12-01 67 views
1

我們請求你們的幫助,因爲我們真的陷入:-(錯誤的搜索結果 - Ruby on Rails的

我們對我們的產品使用Sphinx搜索

搜索一直是一個犯了大uppgrade之前工作正常,但現在升級後的結果是絕對錯誤的,經過多天降級等後,我們無法解決它。

搜索帶有或不帶有重音符的搜索應該返回數百個結果,但現在只返回幾個結果。 搜索結果完全錯誤,重音字符似乎被替換爲無,就像charset_table被忽略。

爲了獲得「總醫院」或「總醫院」的好成績,我們必須鍵入「hpital」 ......

當然,我們使用charset_table裏,重新索引所有表,使用UTF8等。 。

之前,我們曾與工作搜索:

  • Ruby on Rails的1.9.3
  • 獅身人面像2.0.10
  • 裏德爾1.5.12
  • 思考獅身人面像3.1.4
  • Mysql的52年5月5日

我們破碎的配置是:

  • Ruby on Rails的2.0.0
  • 獅身人面像2.2.11
  • 謎語2.0.0
  • 思維獅身人面像3.1.4
  • Mysql的52年5月5日

提前感謝您的反饋

回答

0

不知道知道,足以表明如何修復它,但也許能解釋它。

獅身人面像有一個改寫的標記器,它對無效的UTF8序列做出了不同的響應。因爲「hôpital」僅僅被索引爲「hitalia」,所以查詢會做同樣的事情,所以'匹配'就是這樣。因爲以前無效的序列會變成'分離器',所以它完全有可能進行搜索。

但是新的標記器會'丟棄'無效的序列,因此如果收到'hôpital'在某種程度上被'破壞',它會被索引爲hpital - 無效字節消失。

(查詢分析器處理不當改變,所以現在用的文本解析inconistenly行爲)

所以,如果UTF數據的索引不知何故不完全正確,則行爲將發生變化。剛纔沒有注意到,因爲它一直是錯誤的:)

因此,也許確保獅身人面像正在接收數據正確的數據庫,可以解決它嗎?像SET NAMES。如果數據在sphinx中收到有效,那麼它應該按照charset_table索引ok。

+0

謝謝你的回答,我們正在嘗試這個,但此時沒有變化 – MrOvitch

+0

問題解決了,謝謝:-) – MrOvitch