如何让以下查询返回' 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`
答案 0 :(得分:1)
这是一个棘手的问题。我假设搜索字词为'cluburban'
...
幸运的是,如果您与'club urban'
匹配,则应选择'club urban'
和'club.urban'
,因为它会分别查找这两个字。但是你的代码需要弄清楚单词应该首先用空格分隔。
您可以先通过某种第三方拼写检查或字典查找来运行搜索字词,并希望它尽可能返回'club urban'
并同时运行原始字词和任何可能的字段{{1但是这不会返回MATCH AGAINST
。
我怀疑MySQL可能会赢得你想要的开箱即用的东西,而且我正在寻找其他的插件或软件包来做到这一点。
'cluburba'
也是正确的拼写而非designer
。
答案 1 :(得分:1)
我的建议很少:
<强> 1。在查询中使用多个
SELECT 来自公司 设计师名称在哪里'%cluburba%' AND Designer名称LIKE'%club%' AND Designer Names LIKE'%urban%';
<强> 2。使用IN查询。
* SELECT * FROM Companies 设计师姓名IN(“cluburba”,“club”,“urban”); *
第3。使用Anagram搜索。
SELECT Designer Names
,
0 + IF(a
&gt; 0,a
- 0,0)
+ IF(b
&gt; 0,b
- 0,0)
+ IF(c
&gt; 0,c
- 0,0)
+ IF(d
&gt; 0,d
- 0,0)
+ IF(e
&gt; 1,e
- 1,0)
+ IF(f
&gt; 0,f
- 0,0)
+ IF(g
&gt; 0,g
- 0,0)
+ IF(h
&gt; 0,h
- 0,0)
+ IF(i
&gt; 1,i
- 1,0)
+ IF(j
&gt; 0,j
- 0,0)
+ IF(k
&gt; 0,k
- 0,0)
+ IF(l
&gt; 0,l
- 0,0)
+ IF(m
&gt; 0,m
- 0,0)
+ IF(n
&gt; 1,n
- 1,0)
+ IF(o
&gt; 0,o
- 0,0)
+ IF(p
&gt; 0,p
- 0,0)
+ IF(q
&gt; 0,q
- 0,0)
+ IF(r
&gt; 0,r
- 0,0)
+ IF(s
&gt; 1,s
- 1,0)
+ IF(t
&gt; 2,t
- 2,0)
+ IF(u
&gt; 0,u
- 0,0)
+ IF(v
&gt; 0,v
- 0,0)
+ IF(w
&gt; 0,w
- 0,0)
+ IF(x
&gt; 0,x
- 0,0)
+ IF(y
&gt; 0,y
- 0,0)
+ IF(z
&gt; 0,z
- 0,0)AS差异
来自Companies
WHERE长度(Designer Names
)&lt; = 8
有差异&lt; = 2;
在所有情况下,请使用Distinct以避免重复值。
答案 2 :(得分:0)
你可以使用operator&#34; Like&#34;
SELECT * FROM Companies where companie like '%Cluburban%'