2011-04-07 56 views
4

我做了一個PHP MYSQL FULLTEXT搜索,但如何進行精確搜索?當我使用以下代碼時,我需要返回必須包含單詞'new'和'york'的數據,em ...實際上,代碼將返回一些只包含'new'的數據,但從來沒有'york'。又怎樣?PHP MYSQL FULLTEXT如何進行精確搜索?

SELECT * FROM text WHERE MATCH (title,body) AGAINST('new+york' IN BOOLEAN MODE) 

回答

1

儘管查爾斯關於「新」一詞的長度是正確的,但這裏還有一個問題 - 即使重新索引的最短字長度較短(不是完全可取的),您將獲得包含單詞「new」的內容和'紐約'和他們之間的許多詞語,但不一定只是字符串'紐約'。

此外,「新」這個單詞有超過50%的記錄的可能性很大,所以沒有記錄會返回。

幾年前,我想出了一種合併exact string matching with fulltext indexes的方法 - 儘管我從來沒有想過包括布爾模式搜索。

+0

「哦,這個詞無處不在,讓我們忘記吧」的行爲總是給我留下了不好的印象,好的呼喚。 – Charles 2011-04-07 23:40:03

+0

@Charles是的,它使我測試有限的內容相當困難,當我第一次開始 – HorusKol 2011-04-07 23:46:25

+0

好吧,我已閱讀文章,並知道如何解決,謝謝@HorusKol,併爲我的粗心,它應該是'+新+紐約' 。 – 2011-04-08 00:39:32

2

你已經偶然發現了一個邊緣案例 - 問題不是你認爲的問題。

默認MySQL全文索引不是長度不超過4個字符的索引字,如"new"。如果你想搜索"new",那麼你需要adjust the minimum word length並重建你的索引。