这是我的表的简化版本,我使用的搜索产品查询:
http://sqlfiddle.com/#!2/fac48a/1MySQL全文整理/相关
我需要我的结果让所有排序“兽人必须死亡“产品之前”兽人必须死亡2“产品。我试图按相关性排序(通过设置MATCH AGAINST AS相关性),但它不适用于我...任何想法?
这是我的表的简化版本,我使用的搜索产品查询:
http://sqlfiddle.com/#!2/fac48a/1MySQL全文整理/相关
我需要我的结果让所有排序“兽人必须死亡“产品之前”兽人必须死亡2“产品。我试图按相关性排序(通过设置MATCH AGAINST AS相关性),但它不适用于我...任何想法?
你可以做几件事。首先,确保你的命名一致。我注意到你的一些名字是Orcs Must Die! 2
,有些是Orcs Must Die 2
而没有!
。 Orcs Must Die!
和Orcs Must Die
也是如此。
接下来,添加另一个名为product_category
的列,并使用它对您的结果进行排序。如果您的产品是从Orcs Must Die!
转让product_category
值orcs_must_die
。如果它属于Orcs Must Die! 2
,则将其赋值为orcs_must_die_2
。
最后,在你的选择,简化事情:
/*Change ASC -> DESC depending on the order you want.*/
SELECT name FROM products ORDER BY product_category ASC;
希望帮助。我想你可能刚刚结束了你选择的复杂事情。
编辑:既然你不访问数据库中的数据(我认为可能是一个问题),这可能是难以实现的,由于数据的不一致和不可靠的列进行排序数据通过。
这个查询:(即OCD1前OCD2)
SELECT id, name, s_name FROM products WHERE s_name LIKE '%orcs must die%' UNION SELECT id, name, s_name FROM products WHERE s_name LIKE "%orcs must die 2%" ORDER BY id DESC;
作品,但没有ORDER BY id DESC;
它打印出来以错误的顺序坚持工作,看看是否有一种方法,以更好地优化数据并从那里出发。
对于命名部分,我从外部网站获取这些名称,所以我不能在我的代码中编辑它们,我正在用's_name'进行搜索,这对每个产品都是一样的('兽人必须死亡......和'兽人必须死亡2 ...')。对于分拣部分,这两个产品就是例子,我的桌子上可以有其他产品。我需要得到的是:这两个'兽人必须死亡......'和兽人必须死亡2 ...'产品,但通过搜索查询排序(我输入'兽人必须死亡'我希望所有'兽人必须死... '产品首先,与另一个相同)。这需要适用于每个产品可能有以前或以后的版本。 – 2014-09-25 11:05:26
我有权访问数据库,但无法通过代码编辑数据,因此我必须亲自编辑它,但这需要很长时间。您的查询没有意义。喜欢是非常慢,所以我使用全文搜索...如果我搜索“兽人必死”我得到了两个结果,我需要对它们进行排序。所以你的查询不是正确的... – 2014-09-28 13:58:40