所以我想使用全文搜索實現更好的搜索功能,但它不像預期那樣工作。它不會返回任何結果,或者我認爲不相關的結果。mysql全文搜索沒有返回預期結果
首先我檢查:
顯示變量,如 'ft_min%'
...回報爲4
所以我有一個完整的遊戲數據庫。搜索的一個很好的例子是「刺客信條」。在數據庫中它們實際上被存儲爲「刺客信條」(注意撇號)。所以,如果我做了以下查詢:
SELECT g_name,MATCH(g_name)反對( '刺客信條')AS評分由 tgmp_games WHERE MATCH(g_name)反對( '刺客信條')的限制15
返回結果罰款(以下一些)
...但與搜索腳本,它採用了jQueryUI的自動完成下拉菜單,然後提交查詢用更少的字符什麼比整個單詞時,它回來了空
SELECT g_name,MATCH(g_name)反對( '刺殺了')AS評分由 tgmp_games WHERE MATCH(g_name)反對( '刺殺了')的限制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
)
另外這個命令的順序很奇怪,因爲「巫師2」比其他「刺客信條」遊戲更高。不知道是否有某種模式可以讓它避免陷入標點符號?
您正在使用'limit'而沒有'order by'。您可能想在「限制」之前添加「按分數降序排列」。 –
爲什麼一些撇號在結果示例中轉義而有些不是? –
爲了搜索的目的,您可以去除所有標點符號。 –