簡體   English   中英

MySQL全文匹配除精確匹配之外的所有內容?

[英]MySQL Fulltext matches everything but the exact match?

我面臨一種奇怪的情況,即我的全文搜索查詢似乎與除完全匹配之外的所有內容都匹配...

我的意思是,如果輸入是:

帝國全面戰爭

它將匹配為:

帝國全面戰爭限量版
...雖然數據庫中有一條記錄准確地說: 帝國全面戰爭

這是我的查詢:

     $query_GID = "SELECT game, gameID, 
    MATCH (game) AGAINST ('$game_title') AS score 
FROM gkn_catalog_match WHERE MATCH (game) AGAINST
  ('$game_title');";
$result_GID = $dbc->query($query_GID);
$row_GID = mysqli_fetch_array($result_GID,MYSQLI_ASSOC);

出於調試目的,我繼續編寫了此代碼,以在返回的數組中輸出所有匹配的替代項,但是其中不包含確切的匹配項...

$GID = $row_GID['gameID'];
$GName = $row_GID['game'];
$Gscore = $row_GID['score'];
$max_score = 0;
$data = array();
while($row_GID = mysqli_fetch_assoc($result_GID)) {
if($row_GID['score'] > $max_score){ $max_score = $row_GID['score']; } //because we are ordering by score we can assume on the first run this wil be the max score.
echo "<br><b>Alternatives: " .$row_GID['game']."".@number_format(($row_GID['score']/$max_score)*100,0)."%</b>\n";

}

我的問題是:為什么即使輸入字符串和數據庫中的記錄相同,我也無法獲得想要的/精確的匹配?
而且即使我輸出了數組,似乎也沒有從數據庫中提取出完全匹配項,因為在數組中找不到它。

編輯:

數據庫中的情況記錄示例:

孤島危機
孤島危機2
孤島危機2最高版
孤島危機3
孤島危機3獵人版

搜索字符串(輸入):孤島危機3
查詢返回的匹配項:《孤島危機3獵人版》

Crysis 3未匹配,而是匹配了Crysis 3 Hunter Edition之類的另一條記錄,這是意外的,因為我希望它與Crysis 3匹配。

當我輸出此查詢的$ row數組時,我可以看到不包括孤島危機3:
替代方案:孤島危機3獵人版100%
替代方案:孤島危機2最高版82%
替代方案:孤島危機70%
替代方案:孤島驚魂3豪華版32%
替代方案:孤島驚魂2財富版32%
替代方案:SimCity 4 Deluxe Edition 31%
替代方案:SimCity限量版31%
替代方案:《戰地風雲3》高級版31%
替代方案:《戰地風雲3》限量版31%
替代方案:文明5黃金版31%

編輯2:

手動輸入查詢將返回所需的結果。
因此查詢似乎有效,但是我似乎丟失了返回數組的第一個條目...

我通過將數組分配移到while循環outside解決了我的問題。
現在,如果數據庫中存在游戲標題,則全文查詢最多可匹配99.9%的游戲標題。

如果沒有,那就有點瘋狂了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM