您可以使用MyISAM創建第二個表格,該表格僅包含主表格的主鍵以及您希望FULLTEXT
搜索的文本內容。然後,當您想要進行全文搜索時,在適當的InnoDB表和搜索誘餌MyISAM表之間執行JOIN
,對MyISAM表的條件爲MATCH
。
這也允許您將MyISAM表中的不同搜索誘餌文本存儲到InnoDB表中的「真實」文本中,該文本允許您實現MySQL的FULLTEXT
引擎無法實現的干擾或特殊撇號/連字符處理等功能管理。
這裏的問題當然是保持MyISAM數據與InnoDB數據一致。您可以每隔一段時間運行一次作業來完成它,或者在有文本更新時讓應用程序寫入兩個表。無論哪種方式,希望您可以擺脫全文搜索中的不一致性,這對於「規範」表數據來說是不可接受的。
另一種方法是當您需要的全文解決方案不可用時,只需要回退到LIKE
/RLIKE
(正則表達式)匹配。將不可索引的速度如此之快,但至少它會一直工作,對於較小的數據庫來說沒問題。
編輯:
上,我要執行的搜索表包含存在於實驗室對此我構建Web應用程序
OK文書清單,是否真的必須是FULLTEXT
可搜索?將這樣一個列表建模爲每種設備中的一個實體,以及實驗室和設備之間的連接表(或其它什麼)不是更好嗎?
所以如果2插入同時發生?
MyISAM不會讓兩個INSERT
聲稱相同的主鍵。但這不足以保證一般情況下的「一致性」。雖然聽起來你可以從實際角度出發,但如果明確要求「一致性」,這可能正是他們不希望你做的。
是的,他們建議我們使用FULLTEXT搜索,因爲每個儀器都有一個描述字段,這就是我們需要執行搜索的地方。 – Noona 2010-09-22 21:12:03
我想我會遵循這個建議「你可以使用MyISAM創建第二張表,只包含主表的主鍵和你希望進行FULLTEXT搜索的文本內容,然後當你想做全文搜索時,你可以適當的InnoDB表和搜索誘餌MyISAM表之間的JOIN,以及對MyISAM表的MATCH條件。「 – Noona 2010-09-22 21:18:04
我認爲如果我爲實驗室中不存在的儀器返回一個類型,這不是什麼大問題,因爲那是我們應該在搜索項上返回的。 – Noona 2010-09-22 21:26:11