Hor*_*rse 4 mysql full-text-search
所以我想使用全文搜索来实现更好的搜索功能,但是它没有按预期运行.它将不返回任何结果,或者我认为不会相关的结果.
首先我查了一下:
显示'ft_min%'等变量
...返回4
所以我有一个充满游戏标题的数据库.搜索的一个很好的例子是"刺客信条".在数据库中,它们实际上存储为"刺客信条"(注释撇号).所以,如果我执行以下查询:
SELECT g_name,MATCH(g_name)AGAINST('assassins creed')AS得分FROM tgmp_games WHERE MATCH(g_name)AGAINST('assassins creed')LIMIT 15
返回结果很好(下面有些)
...但是使用搜索脚本,它使用JqueryUI自动完成下拉列表,并且当为任何字符数少于整个单词的内容提交查询时,它返回空
SELECT g_name,MATCH(g_name)AGAINST('assass')AS得分FROM tgmp_games WHERE MATCH(g_name)AGAINST('assass')LIMIT 15
我还读过,如果数据库中的行数太低,那么数据库中的行数会有效,但是那里有25k行,所以应该没问题.我究竟做错了什么?
输出结果我可以得到,但更感兴趣的是如何让部分搜索术语返回一些结果.
Array
(
[g_name] => Assassins Creed III
[score] => 15.406005859375
)
Array
(
[g_name] => The Witcher 2: Assassins of Kings
[score] => 8.46316719055176
)
Array
(
[g_name] => Tenchu: Shadow Assassins
[score] => 8.46316719055176
)
Array
(
[g_name] => The Witcher 2: Assassins of Kings - Enhanced Edition
[score] => 8.27909851074219
)
Array
(
[g_name] => Assassin\'s Creed
[score] => 6.84770059585571
)
Array
(
[g_name] => Assassin\'s Creed III
[score] => 6.84770059585571
)
Array
(
[g_name] => Assassin's Creed II
[score] => 6.84770059585571
)
Array
(
[g_name] => Assassin's Creed: Revelations ...
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin\'s Creed: Revelations
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed: Brotherhood
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed: Bloodlines
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed II: Discovery
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin\'s Creed III: Liberation
[score] => 6.77157783508301
)
Array
(
[g_name] => Assassin's Creed: Altair's Chronicles
[score] => 6.69712924957275
)
Array
(
[g_name] => Assassin's Creed II: Bonfire of the Vanities
[score] => 6.69712924957275
)
Run Code Online (Sandbox Code Playgroud)
这个顺序也是奇怪的,因为"巫师2"正在超越其他"刺客信条"游戏.不确定我是否可以使用某种模式以避免卡在标点符号上?
看看MySQL文档中的布尔搜索. http://dev.mysql.com/doc/refman/5.5/en//fulltext-boolean.html.您可能想要使用的是*运算符(类似于%通配符).
MATCH(g_name)AGAINST('assass*'在BOOLEAN模式下)
由于MySQL应用于全文索引的50%规则,表中的行数会生效.如果一个单词出现在表中超过50%的行中,那么MySQL认为它太常见了,无法提供缩小结果的任何值,而忽略它.这通常用于消除像"the"这样的单词.
| 归档时间: |
|
| 查看次数: |
1616 次 |
| 最近记录: |