【问题标题】:PHP Parsing text field to find tagsPHP解析文本字段以查找标签
【发布时间】:2011-08-02 01:38:57
【问题描述】:
我正在使用 PHP 为我的公司创建一个在线常见问题解答应用程序。
要使用 FAQ 填充数据库,用户必须输入问题、答案和一些搜索标签。
用户通过在文本字段中输入他们的问题来搜索系统。有谁知道任何可以分析问题以查找用于 SQL 搜索的关键字的 PHP(或 JavaScript)模块?
例如,在“什么是公司互联网政策”问题中,粗体项目将被标识为关键字,以便可以在数据库中搜索它们?
【问题讨论】:
标签:
php
javascript
sql
parsing
codeigniter
【解决方案1】:
如果您想使用特定/选定的关键字进行搜索,在我看来,要求用户输入搜索标签是不必要的。我将创建两个表:一个包含您选择的关键字(仅包含一个索引的 PRIMARY 列 - 我将称之为 keyword),另一个存储您的所有常见问题解答信息。然后 PHP 将使用用户的文本字符串来搜索关键字表:
$string = $_POST['search_string'];
$this->db->like('keyword',$string);
$search = $this->db->get('keywords');
if($search->num_rows() > 0){
$keyword = $search->keyword;
$this->db->like('faq_content',$keyword);
$search_faq = $this->db->get('faqs');
foreach($search_faq->result() as $faq){
echo "<h2>$faq_title</h2><p>$faq_content</p>";
}
}
确保在让 search_string 值靠近数据库之前对其进行清理。
【解决方案2】:
假设 MySQL,在相关列上添加FULLTEXT 索引并使用natural language full-text search。
然后您应该能够在AGAINST 子句中使用输入的标题,例如
SELECT id, title, body, MATCH (title, body) AGAINST
('What is the company internet policy') AS score
FROM faq WHERE MATCH (title, body) AGAINST
('What is the company internet policy');