2015-09-01 110 views
0

我有一個'用戶'的MySQL表。用戶名稱存儲在單獨的「名稱」表中。奇怪的結果與思維獅身人面像

索引文件是這樣的:

ThinkingSphinx::Index.define :user, :with => :active_record do 

    indexes names.text, :as => :name 

end 

搜索工作正常,大部分的時間,但有些項目只是沒有結果。例如,「Thomas J Jefferson」先生在搜索「Thomas」,「J」,「Jefferson」或「Thomas J Jefferson」時不返回。他的所有總統都對發動機有更好的待遇。

我只是不知道什麼是錯的。

的Rails:3.2.18,紅寶石:1.9.3,ThinkingSphinx:3.1.1

+0

你確定你的版本正確嗎? TS v1.4適用於Rails 2.3,並且您的索引定義樣式僅在TS v3中引入...您說,在您將這些新名稱添加到用戶後,是否重新編制數據索引? – pat

+0

TS版本錯誤,已編輯。是的,我重新編制了數據索引。 – Miotsu

+0

從提供的信息看,這一切看起來都是正確的。名稱是否連接到用戶?你正在運行'User.search'Thomas J Jefferson'',還是比這更復雜的東西? – pat

回答

-1

您正在搜索的全文將與托馬斯開始。

所以搜索給定的結果,你必須寫下面的代碼在 thinking_sphinx.yml文件

min_infix_len:1 enable_star:2

在搜索查詢寫: User.search(「@名'#{params [:name]}'「)你會得到你的結果。

+0

enable_star選項是關於通配符,它​​不是問題的焦點。 min_infix_len是關於子字符串的,並且如問題所指出的,即使是完全匹配的字符串也不會產生任何結果。 – Miotsu