嘿,有一个小问题,我不太了解MYSQL全文搜索。 我有这个:
$data = mysql_query("SELECT * FROM posts WHERE MATCH (article) AGAINST ('news')");
while($result = mysql_fetch_array( $data ))
{
echo $result['title'];
echo "<br><br> ";
echo $result['article'];
echo "<br><br>";
}
$anymatches=mysql_num_rows($data);
if ($anymatches == 0)
{
echo "Sorry, but we can not find an entry to match your query<br><br>";
}
echo "<b>Searched For:</b> " .$search_term;
这很好用。它从数据库中提取标题和文章,并回显出数据库中每个项目的所有信息。只从'文章'columnthough中提取信息.....(如果“新闻”仅在标题中,则不会在结果中显示。) 反之亦然。如果我查询MATCH(标题),它只会在标题中找到带有给定搜索词的帖子,而不是文章
然而,当我改变MATCH条款时:MATCH(标题,文章),我得到零结果。基本上,我只把MATCH加到了一列。
这是posts表的表格架构: (这是来自出口)
创建TA BLE
帖子(
id
int(55)unsigned NOT NULL auto_increment,
title
varchar(255)collate latin1_german2_ci默认为NULL,
article
文本整理latin1_german2_ci,
post_type
varchar(255)collate latin1_german2_ci默认为NULL,
day
文本整理latin1_german2_ci,
user
varchar(55)collate latin1_german2_ci默认为NULL,
month
文本整理latin1_german2_ci,
year
int(4)默认为NULL,
member_id
int(55)默认为NULL,
published
tinyint(1)NOT NULL默认为'0',
draft
tinyint(1)默认为'0',
slug
varchar(255)collate latin1_german2_ci默认为NULL,
event_month
varchar(255)collate latin1_german2_ci默认为NULL,
event_day1
int(2)默认为NULL,
event_day2
int(2)默认为NULL,
PRIMARY KEY(id
),
FULLTEXT KEY title
(title
),
FULLTEXT KEY article
(article
)
)ENGINE = MyISAM;
任何人都知道为什么它不希望第二列看到?
答案 0 :(得分:5)
在两个字段上定义全文索引:
FULLTEXT KEY title_article_fx (title, article)