加权关键字搜索
您好:我想对标有关键字的产品进行“加权搜索”。
(所以:不是全文搜索,而是n-to-m-relation)。所以这里是:
Table 'product':
sku - the primary key
name
Table 'keywords':
kid - keyword idea
keyword_de - German language String (e.g. 'Hund','Katze','Maus')
keyword_en - English language String (e.g. 'Dog','Cat','Mouse')
Table 'product_keyword' (the cross-table)
sku __ combined primary key
kid /
我想要的是获得至少“包含”一个相关关键字的所有产品的分数。如果我搜索('狗','大象','Maus')我想要那个
狗得分为1.003,
1.002的大象
Maus of 1.001
所以最不重要的搜索词从1.001开始,其他一切都是0.001 ++。这样,3.0的较低分数限制将等于“AND”查询(必须找到所有三个关键字),1.0的较低分数限制将等于“OR”。在或多或少匹配的东西之间的任何东西。特别是根据这个分数排序,最相关的搜索结果将是第一个(无论下限)......
我想我将不得不做些什么
IF( keyword1 == 'dog', 1.001, 0) + IF...
也许在一个SUM()里面,并且可能在交叉表的JOIN结尾处有一个GROUP BY,是吗?但我对如何解决这个问题毫无头绪。
可行的是,事先从关键字中获取关键字ID。这是一个便宜的查询。因此,关键字表可以被忽略,而所有关于交叉和产品表的另一个......
我手边有PHP自动编写一个相当冗长的PHP语句,但我想避免进一步的多个SQL语句。特别是因为我将限制查询结果(最常见的是“LIMIT 0,20”)用于分页模式结果,因此通过脚本在结果之间循环非常大量...
DANKESCHÖN,如果你可以帮我这个:-)
没有找到相关结果
已邀请:
1 个回复
苦诫
(编辑2:忘记了
条款。)