2010-08-10 95 views
1

如何在mysql中搜索以下場景?在mysql中搜索

搜索詞例如:偉大的國家

Mysql的領域,

  • 行1包含:大,城市
  • 行2包含:真棒狀態
  • 行3包含:偉大的國家,和城市

因此,在搜索時,在給定的期限內,它給我所有上面的三行。

我想要實現的是,MySQL的shud搜索在我的搜索詞的話,如果有任何單詞在現場發現,顯示它....

MySQL的字段可能包含之間的逗號或者可能不包含......

此外,不能使用全文本功能,導致需要表引擎爲myisam,並且我不能使用myisam引擎,因爲我需要在我的表上使用外鍵關係

回答

1

您的模式未設置爲文本搜索(意味着您不是專家),但您說您需要「我的表上的外鍵關係」 - 這是一個非常天真或非常複雜的要求。我建議你考慮一下適用。

MySQL的字段可能包含單詞之間用逗號或可以不包含.....

你肯定會必須建立某種形式的前端,在那裏你可以至少正常化參數,我會建議使用文本搜索優化模式,例如

base_data 
--------- 
some_primary_key 
some_text 
some_other_stuff 
... 

base_data_words 
--------------- 
bd_pk references base_data.some_primary_key 
word 
index(word) 

然後分裂包含在base_data.some_text詞語成base_data_words.word然後找到東西是簡單和有效的。

C.

+0

Iam天真的方式,我認爲可能有一些簡單或直接的方式來實現這一點,但除此之外,我相信我可以想出一些合乎邏輯的方式來實現這一點...... 但肯定的是,你的答案是安靜複雜,所以IAM會嘗試這種方式,非常感謝.... – texpert 2010-08-11 18:40:31

2
+0

如果我嘗試使用全文功能,我需要改變表型在MyISAM,我不能這樣做,因爲我有我的表的外鍵約束, S0,S1有什麼這個問題的其他出路? – texpert 2010-08-11 17:12:00

+0

@tecks,一種常見的模式是創建一組單獨的表,僅用於使用FULLTEXT進行搜索。這是一個馬虎的解決方法,但它確實有效。 – Charles 2010-08-11 17:21:01

+0

你也可以實現像Sphinx或Lucene這樣的外部FULL TEXT搜索引擎。 – Mchl 2010-08-11 17:28:53