2010-01-06 56 views
8

我需要對另一個表中的列中的一大堆值進行全文搜索。由於MATCH()需要AGAINST()部分中的值,所以直接:「SELECT a.id FROM a,b WHERE MATCH(b.content)AGAINST(a.name)」失敗並顯示「AGAINST的參數不正確」。針對列值的MySQL全文搜索?

現在,我知道我可以編寫一個腳本來查詢名稱列表,然後搜索它們,但我寧願制定一個更復雜的查詢,以便一次處理它。它也不需要很快。

想法?

感謝

回答

3

不幸的是,http://dev.mysql.com/doc/refman/5.6/en/fulltext-search.html說:

搜索字符串必須是一個字符串值,查詢評估過程中保持不變。這就排除了,例如,一個表列,因爲它對每一行都不相同。

看起來你必須一次搜索一個模式,如果你使用MySQL的FULLTEXT索引作爲你的搜索解決方案。

我能想到的唯一替代方法是允許搜索許多模式,如您所描述的是倒數索引。雖然這不像真正的全文搜索技術那樣靈活或可擴展。

見我的介紹http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

+1

是的,我已經看到了,但http://dev.mysql.com/tech-resources/articles/full-text-revealed.html說:「」的說法來反對()必須是一個常量字符串「這是沒有什麼可擔心的,我們只是沒有更新手冊,但如果使用MySQL版本5,則還沒有顯示AGAINST()參數可以是變量或參數。我希望有人會使用某種更復雜的SQL方法(視圖,過程或其他)提供一些建議。 其實,我所要做的就是基本上建立表b中文本列中出現的表a的倒數索引。 – 2010-01-06 18:43:23

+1

該文章來自2004年5月,但他們*仍然*沒有更新手冊?!太可悲了! – 2010-01-06 19:09:00

+0

說一下全文到mysql的重要性,我想。我發現自己最近學習了Squid,但這是項目的一個側面,我真的沒有系統變化的意圖。 – 2010-01-07 07:01:40