2010-08-10 67 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