|
|
1
94
创建三个全文索引
然后,您的查询:
关键是
但是,在实际搜索中,您没有使用这两个索引中的任何一个。为此,使用第三个索引,它位于两列上。 (关键字、内容)上的索引控制您的召回。阿卡,返回的是什么。
请注意,您可以使用任意数量的不同索引(或者,根据其他因素改变您在查询时使用的索引和权重,可能……如果查询包含停止词,则仅搜索关键字……如果查询包含3个以上的词,则减少关键字的权重偏差……等等)。 每个索引都会占用磁盘空间,所以索引越多,磁盘就越多。反过来,mysql的内存占用也更大。此外,插入将花费更长的时间,因为您有更多的索引要更新。 您应该根据您的情况对性能进行基准测试(小心关闭mysql查询缓存以进行基准测试,否则您的结果将出现偏差)。这不是谷歌分级的效率,但它非常简单,而且“开箱即用”,而且几乎可以肯定比在查询中使用“like”要好得多。
|
|
|
2
19
实际上,使用case语句生成一对标志可能是更好的解决方案:
同样,只有当所有关键字匹配的排名高于所有仅内容匹配的排名时,才会出现这种情况。我还假设关键字和内容的匹配是最高排名。 |
|
|
3
7
这将根据
|
|
|
4
0
请不要在这里使用任何劣质的SQL,我已经好几年没有编写任何SQL了,我正在做这件事。。。
J.Js |
|
|
5
0
在布尔模式下,MySQL支持“>”和“<”运算符更改单词对指定给行的相关性值的贡献。 我想知道像这样的事情会不会奏效?
|
|
|
6
-1
据我所知,MySQL全文搜索不支持这一点,但您可以通过在关键字字段中多次重复该单词来实现这一效果。 用“foo-bar foo-bar foo-bar foo-bar”代替关键字“foo-bar”,这样一来,foo和bar在关键字列中都同等重要,而且由于它们出现了多次,因此与mysql的关系变得更加密切。 我们在我们的网站上使用它,它是有效的。 |
|
|
7
-1
那要看你到底是什么意思了:
如果您的意思是关键字中包含foo的行应该出现 之前 任何 |
|
|
8
-1
我需要类似的东西,并使用OP的解决方案,但我注意到全文与部分单词不匹配。因此,如果“西瓜”作为单词的一部分出现在关键字或内容中(如watermelonsalesmanager),则它不匹配,并且由于WHERE匹配而不包含在结果中。 所以我做了一点傻事,将OP的查询调整为:
希望这有帮助。 |
|
|
9
-4
如果度量标准只是所有关键字匹配比所有内容匹配更“有价值”,那么您可以使用具有行计数的并集。沿着这条线的东西。
对于任何比这更复杂的事情,如果你想对每一行应用一个实际的权重,我不知道如何帮助你。 |
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |