2010-07-20 114 views
0

我在PHP/MySQL的票務系統上工作。 我們已經在布爾模式下實現了mysql FTS,爲用戶提供搜索功能。 用戶輸入搜索字符串,我們向她展示問題列表。MySQL FTS實施

下面是示例數據庫模式:

問題表 - (ID冠軍描述
它FTS指數(標題,描述)

issue_comments表 - ( ID,issue_id,comment
它有FTS指數(評論)

每個問題可以有多個評論。 所以有可能在issue_comments表中對應於行的問題表多行

說用戶輸入搜索字符串 - α+β

php腳本打破了個別單詞的字符串,追加一個「+'在每個單詞前標記並執行下面的查詢。

select id as issue_id from issues where match(title, description) against ('+alpha +beta' in  boolean mode) 
    union 
select id as issue_id from issues inner join issue_comments on  issue.id=issue_comments.issue_id where match(comment) against ('+alpha +beta' in boolean mode) 

它會搜索所有問題
具有(標題,描述)
α和β或與該問題的一個評論都α和β。

但是這種設置有一個限制
我想一個問題來在搜索結果中如果Alpha是存在於問題標題和β存在於它的評論之一。這是不可能的以上設置。
我該如何做到這一點?

回答

0

我沒有嘗試過這個在現實生活中還沒有,但指定多個列應該在布爾模式以及工作:

match (title,comment) against... 

有這個沒有明確提及,但docs被搜索,而不是列。