我正在尝试在表格中搜索多个关键字。但是,我不是在寻找一个关键字甚至是10.它大约有一千个关键字。这些关键字也在表格中,可以控制。我宁愿不将这些关键字硬编码到我的SQL命令中......
我正在搜索的目标表包含大量文本,一个单元格可能包含整个句子或段落...所以做一些类似于全文的内容'在mySQL中搜索似乎是一个好的开始。
与此问题非常相似,但同样,当我谈到多个关键字时,我的意思是数百到数千。 mysql FULLTEXT search multiple words
我可以将关键字表转储到数组中并运行FULLTEXT搜索吗?甚至可以用mySQL来解决这个问题,还是有限制我不考虑?我也对其他技术建议持开放态度。抱歉,我没有发布的代码或错误。我首先尝试从概念上理解如何处理这个问题。 -tia
答案 0 :(得分:0)
最近我不得不做出类似的决定。我决定和lucene一起去。我将可索引字段存储在lucene中,并返回mysql行的id。
其他选择是sphinx,可以找到完整的教程here。
答案 1 :(得分:0)
SELECT * FROM articles WHERE body LIKE'%$ keyword%';
答案 2 :(得分:0)
你只需要在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++;
}
我将您的关键字命名为column =“keywords”。
您也可以轻松地将其他条件添加到$ query中。
答案 3 :(得分:0)
如果您的结果集是>请注意mysql全文搜索。整个数据集的50%,mysql认为这是一个失败的搜索,你什么都得不到。
如果您有1000个可能的单词的命中列表,则可能会发生这种情况。
我会说你最好调查一下文本中关键词的提取(让我们想象它们就是文章)。
然后将这些关键字存储在自己的表中。
为了获得最佳效果,您可能希望调查自然语言处理并从文章而不仅仅是单词中提取意义。