【发布时间】:2017-09-25 23:16:05
【问题描述】:
我目前正在使用 MySQL,但如有必要,我愿意迁移到任何建议的解决方案。
我正在寻找一种简单的方法来实现对表的搜索。
该表有多个条目,其数据类似于用户帐户中的数据,例如姓名、地址、电话号码和一个包含任意长度的 cmets 的文本列。
我想进行搜索,以便遍历所有行和列并找到最匹配的行。纠正了一些拼写错误(不是很重要)。但最重要的是能够交叉搜索所有内容。
表格可以有多达 20,000 行。
搜索参数将是例如:“公司名字”
预期结果:
公司|联系人名字|地址|...|...
示例 2,搜索参数略有拼写错误:“Pinaple Street Compani”
预期结果行:
公司|菠萝街|..|... 公司|菠萝街|..|... 公司|菠萝街|..|...
编辑:
忘记说明将同时进行多个搜索,因此它必须快速(同时进行大约 100 次搜索)。此外,数据语言不是英文,数据库是 utf8,支持非英文字符
【问题讨论】:
-
没有简单的解决方案。你必须写
WHERE col1 LIKE '%pattern%' OR col2 LIKE '%pattern%' OR ...。它不会有效率,也不会做任何拼写更正。 -
请显示 a) 示例表数据,b) 您的预期输出,以及 c) 您已经尝试过的查询。
-
您可以使用全文搜索,但在每一列上都有一个全文索引可能会产生很多开销。
-
对于拼写错误的问题,你可以尝试使用soundex这样的函数来减少索引词。
标签: mysql