2010-06-29 92 views
0

我试图搜索与OR值和AND与布尔运算符

这里MySQL全文索引搜索是一个例子或

SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 | 1)' IN BOOLEAN MODE); 

这工作,但如果我想要做的,

SELECT * FROM contacts_items WHERE MATCH (item_id) AGAINST ('(10 & 1)' IN BOOLEAN MODE); 

这将试图找到在同一行中的10和1的联系人,但我想要搜索的联系人有10和1作为item_id但多个行

contact_id item_id 
    1    1 
    1    10 
    2    10 

的AND搜索将返回CONTACT_ID - 1

我觉得这是不可能的一个搜索,但想使代码更复杂的则需要之前,我会问。

感谢蒂姆

回答

1

首先,你是滥用ANDOR全文搜索操作符。 |&reserved for future use;如documentation中所述使用+-

另一个方面,我似乎不了解你的例子是为什么你使用fulltext搜索,如果你正在使用整数。一个简单的WHERE item_id IN (1, 10)就足够了。

但是,如果您需要fulltext搜索,我会建议使用Sphinx

+0

感谢您的支持!那么是不是有可能找到只有项目1和10的联系人? – Tim 2010-06-29 09:41:50

+0

'SELECT * FROM contact_items WHERE item_id IN(1,10);' – 2010-06-29 12:45:36