2011-04-30 140 views
0

我想將搜索添加到我的網站。我有一個來自視頻遊戲挑戰的數據庫。每個挑戰都有一個標題和說明,我希望能夠至少搜索說明,但如果可能的話都可以。現在,我已經設置了表格,以便我可以使用MATCH()AGAINST(),但我遇到的問題可能是單數或複數。MySQL MATCH-AGAINST複數單詞?

例如,「助手」一詞出現在多項挑戰中,但如果用戶鍵入「助手」,他將不會得到任何東西。有什麼方法可以添加該功能嗎?我嘗試了所有我能想到的,但迄今爲止沒有任何工作。

更新:我只是最近才瞭解到MATCH AGAINST,所以我不確定在我的情況下使用它的「正確」方式。就像我說的,我有一個叫做description列的表,用上面的例子字,assists,其中多次出現在餐桌上,我會用這個查詢:

SELECT * FROM challenges WHERE MATCH(description) AGAINST('assists') 

我只是執行的它返回了10行。如果我將其更改爲assist,我什麼也得不到。

+0

你使用什麼樣的MATCH AGAINST?自然語言? – 2011-04-30 14:48:39

+0

我在帖子中添加了更多信息。 – HaLo2FrEeEk 2011-05-01 14:39:37

回答

0

也許你可以使用MySQL的SOUNDEX()函數。

SELECT 
    id, 
    title 
FROM products AS p 
WHERE p.title SOUNDS LIKE 'Shaw' 

// This wil match 'Saw' etc. 

我想這也可能適用於你,他會帶着複數

+0

我試着用這個查詢:''SELECT * FROM挑戰where where description SOUNDS like'assist''' and nothing nothing,I change it to''assists'' and still nothing nothing。 – HaLo2FrEeEk 2011-05-01 14:41:04

+0

我爲你檢查了它,正常的'assist'和'assists'有Soundex。所以他們應該查詢查詢。你可以在這個網站上檢查你的Soundex:http://www.searchforancestors.com/soundex.html – 2011-05-02 18:24:22

+0

好吧,但我告訴你,我運行了我在之前的評論中列出的查詢。對於「助攻」和「助攻」這兩個字我都得到了0分。 – HaLo2FrEeEk 2011-05-03 17:47:43

0

我可能會丟失的你想要做什麼的地步,但爲什麼不只是做一個LIKE匹配像這樣:

SELECT * FROM challenges WHERE description LIKE "%assist%"; 

這將匹配任何包含「幫助」以及「助攻」的內容。當然,它也將匹配「助理」和「援助」,這可能不是你想要的...

+0

是的,這不是我正在尋找的東西。就像你說的那樣,它會匹配任何也包含搜索詞的單詞,就像我搜索「閱讀」一樣,它會返回「線索」,「麪包」等。 – HaLo2FrEeEk 2011-05-02 15:15:28