Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用类似google的匹配功能从mysql查询中返回不完整或相似的单词_Mysql - Fatal编程技术网

如何使用类似google的匹配功能从mysql查询中返回不完整或相似的单词

如何使用类似google的匹配功能从mysql查询中返回不完整或相似的单词,mysql,Mysql,我如何使下面的查询返回“cluburba”或“club urban”或“club.urban” SELECT * FROM Companies WHERE MATCH(`Designor Names`) AGAINST ('Cluburban' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) GROUP BY `Designor Names` 您可以使用运算符“Like” 这是一个棘手的问题。我假设搜索词是“cluburban” 幸运的是,如

我如何使下面的查询返回“cluburba”或“club urban”或“club.urban”

SELECT * 
FROM Companies 
WHERE MATCH(`Designor Names`) AGAINST ('Cluburban' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) 
GROUP BY `Designor Names`
您可以使用运算符“Like”


这是一个棘手的问题。我假设搜索词是
“cluburban”

幸运的是,如果您与
'club urban'
匹配,它应该同时选择
'club urban'
'club.urban'
,因为它将分别查找这两个词。但是您的代码需要弄清楚这些单词应该首先用空格隔开

您可以先通过某种第三方拼写检查或词典查找来运行搜索词,并希望它尽可能返回
'club urban'
,然后通过
匹配
来运行原始词和任何可能的词,但这不会返回
'cluburba'

我怀疑MySQL可能不会满足您的需求,我会寻找其他插件或包来实现这一点


另外,
designer
是正确的拼写,而不是
designor

我的建议很少:

1。在查询中使用多个like

挑选 来自公司 其中设计器名称为“%cluburba%” 和设计师名称,如“%club%” 以及设计师名称,如“%urban%”

2。在查询中使用。

*从公司中选择* 设计师在(“cluburba”、“club”、“urban”)中命名*

3。使用字谜搜索。

选择设计师名称
, 0+如果(
a
>0,
a
-0,0) +如果(
b
>0,
b
-0,0) +如果(
c
>0,
c
-0,0) +如果(
d
>0,
d
-0,0) +如果(
e
>1,
e
-1,0) +如果(
f
>0,
f
-0,0) +如果(
g
>0,
g
-0,0) +如果(
h
>0,
h
-0,0) +如果(
i
>1,
i
-1,0) +如果(
j
>0,
j
-0,0) +如果(
k
>0,
k
-0,0) +如果(
l
>0,
l
-0,0) +如果(
m
>0,
m
-0,0) +如果(
n
>1,
n
-1,0) +如果(
o
>0,
o
-0,0) +如果(
p
>0,
p
-0,0) +如果(
q
>0,
q
-0,0) +如果(
r
>0,
r
-0,0) +如果(
s
>1,
s
-1,0) +如果(
t
>2,
t
-2,0) +如果(
u
>0,
u
-0,0) +如果(
v
>0,
v
-0,0) +如果(
w
>0,
w
-0,0) +如果(
x
>0,
x
-0,0) +如果(
y
>0,
y
-0,0) +如果(
z
>0,
z
-0,0)作为差异 来自
公司

WHERE Length(
Designer Names
)如何:
SELECT*从Designor名字为'Cluburba%'的公司按Designor名字分组
您可能需要超越mySQL,并为此使用专门的搜索引擎,如Lucene。谢谢这可能是我的问题的答案question@Pekka:如果MySQL不可能涵盖
club urban
club.urban
,我可以接受您的意见作为我的解决方案。啊,OP从根本上改变了他们的问题。这不是你的错,但是你的答案现在不正确。如果你认为这个答案不正确,请编辑我的答案。。。你的回答正确吗?我对这个问题没有答案。OP想要的可能不可能仅用mySQL来完成。@rdn87。因为你的答案在我最初的问题行中不会是错误的,所以我对你的答案投了更高的票。如果我只想搜索设计师名称“cluburban”的变体,这可能是一个很好的解决方案。实际上我有2万个设计师的名字。那么你的解决方案会有什么变化吗?你能解释一下字谜搜索吗。零是什么?他们是我的关键字“cluburban”的唯一替代品还是必须准确地使用它?
SELECT * FROM Companies where companie like '%Cluburban%'