我使用Symfony 2.6构建了一个静态网站,它已被翻译成8种不同的语言,并包含多种形式。
现在需要一个搜索工具,实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
可以使用以下方式获取搜索工具:
SELECT * FROM article WHERE article.body LIKE '%searched_query%'
可以使用以下工具实现全文搜索:
但在这两种情况下,您都应将内容保存在数据库或其他文件中。
在您的情况下,作为解决方法,我建议抓取您自己的网站,并从您找到搜索文本的网站返回链接
use Symfony\Component\DomCrawler\Crawler;
class InternalCrawler {
private $crawler;
private $textToSearch;
private $matchedUrls;
public function __construct($textToSearch)
{
$this->textToSearch = $textToSearch;
}
protected function requestUrl($url)
{
//curl the url to crawl
//...
return $html;
}
protected function getUrlsToCrawl()
{
return array(
'url-to-homepage',
'url-to-an-article-page',
...
);
}
protected function match($url, $html)
{
$this->crawler = new Crawler($html);
$textExists = $this->crawler->filter("html:contains('{$this->textToSearch}')")->count();
if ($textExists) {
$this->matchedUrls[] = $url;
}
}
public function getMatchedUrls()
{
foreach ($this->getUrlsToCrawl() as $url) {
$html = $this->requestUrl($url);
$this->match($url, $html);
}
return $this->matchedUrls;
}
}
因此,您将获得与您的搜索文本匹配的urls
列表。