0

我正在尝试为基于 PHP 的电子商务网站构建多面搜索。使用方法构建过滤器GET会使代码变得非常复杂,因为网站有很多过滤器。有人可以提供一些教程或更好的方法来构建多面搜索吗?

我想过使用 Sphinx 实现分面搜索,但我是 Sphinx 的新手。客户拒绝了 Sphinx(我不知道为什么)。我能够使用 Sphinx 构建基本搜索,但不知道如何进行分面搜索。如果有人可以提供一些关于 Sphinx 的教程,那将会很棒,因为我可能会在使用它之后尝试说服客户。时间是这里的一个主要因素,因为我必须在一天内实现分面搜索。

$urlstring = '';
$urlstring = rmParamQS('category');
$urlstring = rmParamQS('brand', $urlstring);

将添加新的查询字符串(如类别或品牌)并将从上述函数中删除现有查询字符串的代码

$url = 'http://' . $_SERVER['SERVER_NAME'].'?page='.$page.$urlstring;

$categoryGet = (isset($_GET['category']))?$_GET['category']:NULL;
$categoryQS = '&category='.$categoryGet;

$brandGet = (isset($_GET['brand']))?$_GET['brand']:NULL;
$brandQS = '&brand='.$brandGet;

$categories = categories_list($brandGet);

echo '<ul id="categories">';
list all categories using foreach with link in following format
echo '<a href="'.$url.'&category='.$category["category_id"].'">'
echo '</ul>';

$brands = brands_list($categoryGet);
echo '<ul id="brands">';
list all brands using foreach with link in following format
echo '<a href="'.$url.'&brand='.$brand["brand_id"].'">'
echo '</ul>';

像类别和品牌一样,我还有五个过滤器。rmParamQS 函数将从 $url 中删除相应的查询字符串。categories_list 和brand_list 函数将根据其他过滤器的url中查询字符串中的ID过滤数据

4

2 回答 2

0

我不知道为什么它是多面搜索,但这里有一个使用连接的 php 和 mysql 示例:Faceted Search (solr) vs Good old filtering via PHP?.

于 2012-08-10T17:13:24.377 回答
0

这是关于 Sphinx / Manticore Search 中分面搜索的教程 - https://play.manticoresearch.com/faceting/

于 2019-08-07T02:52:42.587 回答