我正在尝试搜索多个关键字表。然而,我不是寻找一个关键字,甚至10。大概有一千个关键词。这些关键字也在一个表中,可以被控制。我宁愿不硬编码这些关键字到我的SQL命令…
我正在搜索的目标表包含大量文本,单元格可以包含整个句子或段落…所以在mySQL中做一些像"全文"搜索似乎是一个好的开始。
与这个问题非常相似,但是,当我说到多个关键字时,我指的是成百上千个。mysql FULLTEXT搜索多字
我可以转储我的关键字表到一个数组和运行FULLTEXT搜索?mySQL可以做到这一点吗?还是有我没有考虑到的限制?我也愿意接受其他技术建议。对不起,我没有代码或错误张贴。我首先试图从概念上理解如何处理这个问题。tia
最近我不得不做一个类似的决定。我决定用lucene。我将可索引字段存储在lucene中,并返回mysql行的id。
另一个选择是sphinx,完整的教程可以在这里找到。
在这里查看相关文章。和这里。
SELECT * FROM articles WHERE body LIKE '%$keyword%';
你只需要在mysql查询中使用for循环来读取所有keyworks
很明显你用逗号或-分隔了你的关键字
所以你需要用逗号把关键字分开,然后把它们放在一个变量中
例如:
$keywords = "key1,key2,key3,..."; // values come from keywords column from db.
现在你只需要打开$keywords
$keys=explode(',',$keywords);
最后在你的查询中你需要使用for循环:
$query = "SELECT * From targettable";
$i = 0;
foreach ($keys as $key)
{
$query .= "WHERE keywords LIKE '%".$key."%' )";
$i++;
}
i named your keywords column = "keywords".
你也可以很容易地在$query中添加其他条件
注意mysql全文搜索,如果你的结果集>整个数据集的50%,mysql认为这是一个失败的搜索,你不会得到任何东西。
如果你有一个包含1000个可能单词的列表,这听起来很可能发生。
我想说你最好调查一下从文本(让我们假设它们是文章)中提取关键字,因为它们是存储的。
然后将这些关键字存储在自己的表中。
为了获得最好的结果,你可能想要研究自然语言处理,从文章中提取意义,而不仅仅是从单词中提取意义。