搜索字符串和表中的数字

时间:2011-11-23 07:21:18

标签: php mysql search

我在搜索中遇到了一些问题。我有一个表classDetails,我有className,classNumber,classSubject。现在在类名中会有一些数据集。计算机科学,计算机,电气等。课堂上的主题数据就像。 IT,EEE,MEC等......在类号中数据就像。 233,3213,12等。如果用户搜索他们用来搜索的表,如233或eee 12等,我已经尝试了很多选项,如

SELECT * FROM classes_detail 
WHERE classDeleted = 0 AND 
( 
   LOWER(classCollege) LIKE "%'.  trim($searchTxt). '%"  OR 
   classNumber LIKE "%'.  trim($searchTxt). '%" OR 
   CONCAT( classNumber , LOWER(classCollege) ) LIKE "%'.  trim($searchTxt). '%" 
)

任何人都可以找到我最好的搜索词。

2 个答案:

答案 0 :(得分:1)

你可以尝试

SELECT * FROM classes_detail
WHERE classDeleted = 0 
  AND LOWER(CONCAT_WS(' ',subject,class_num)) = LOWER(your_param)

或(搜索更多自由文本)

SELECT * FROM classes_detail
WHERE classDeleted = 0 
  AND (LOWER(CONCAT_WS(' ', subject, class_num)) = LOWER(your_param)
   OR LOWER(subject) = LOWER(your_param)
   OR LOWER(class_num) = LOWER(your_param))

答案 1 :(得分:0)

自由文本搜索是一个很大的主题(只需要问Google!),您可以通过多种方式来解决这个问题。如果您的数据结构良好,相当静态且相对较小(即类主题只有5-10个选项,如IT,EEE,MEC很少更改),您可能希望优化用户的搜索选项,以便他们必须明确选择他们正在寻找的那些。

或者,您可能想要调查MySQL's full-text searching options。或者您甚至可能想要升级并查看像Lucene这样的独立解决方案(这只是一个选项,有更多类似的加载)。

没有一种尺寸适合所有人;这一切都取决于您的数据结构以及用户想要的内容。