多标准搜索

时间:2009-09-02 14:37:56

标签: php sql mysql search

我有多个包含客户数据的表(来自客户名称,客户联系人姓名,客户服务项目等)。

我需要在表格中启用对这些多列的搜索。然后我必须使用搜索结果来提取客户信息(我需要客户ID或客户名称)。

这样做的最佳方式是什么?

可能的解决方案:

  1. 提供多个过滤器(不同的搜索框),然后分别处理每个结果。 (客户不喜欢这个,并希望将它放在一个盒子里。)
  2. 创建临时表(CustomerID,搜索字段值)。
  3. 创建索引!?
  4. 用户内部联接,并将逻辑放入处理搜索结果!!!!
  5. 感谢。

3 个答案:

答案 0 :(得分:0)

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

我确实认为这类似于Oracle Text Search等,它在Oracle应用程序中用于允许更智能的搜索,“google-likish”。

所以这是一个要创建的全文索引。

使用内部联接(或者更糟糕的是,复制临时表中的内容)可能工作但代码将很复杂,您可能会扼杀性能。

答案 1 :(得分:0)

如果客户坚持要进行类似的搜索,那么你可以做的唯一事情就是创建一个TEXT列,FULLTEXT将其编入索引,并将要搜索的所有列连接到此列。如果你这样做,我建议你用这种形式写你的查询,以保证正确的匹配,同时保持一个有意义的排序:

select *
  from sometable
 where match(search_column) against('$search_terms' in boolean mode)
order
    by match(search_column) against('$search_terms')

答案 2 :(得分:0)

尝试类似:

SELECT
   c.*
    FROM CustomerTable c
        INNER JOIN (SELECT
                        CustomerID
                        FROM Table1
                        WHERE columnA =filter1
                    UNION
                    SELECT
                        CustomerID
                        FROM Table2
                        WHERE columnB =filter2
                    UNION
                    SELECT
                        CustomerID
                        FROM Table3
                        WHERE columnC =filter3
                   ) dt ON c.CustomerID=dt.CustomerID