Search 如何使用sphinx实现颜色搜索?
使用mysql通过主色调搜索照片非常简单。假设照片最主要颜色的r、g、b值已经存储在数据库中,这可以通过以下方式实现:Search 如何使用sphinx实现颜色搜索?,search,colors,search-engine,sphinx,Search,Colors,Search Engine,Sphinx,使用mysql通过主色调搜索照片非常简单。假设照片最主要颜色的r、g、b值已经存储在数据库中,这可以通过以下方式实现: SELECT * FROM colors WHERE ABS(dominant_r - :r) < :threshold AND ABS(dominant_g - :g) < :threshold AND ABS(dominant_b - :b) < :threshold 我想知道,是否有可能在sphinx中存储颜色并使用sphin
SELECT * FROM colors
WHERE ABS(dominant_r - :r) < :threshold
AND ABS(dominant_g - :g) < :threshold
AND ABS(dominant_b - :b) < :threshold
我想知道,是否有可能在sphinx中存储颜色并使用sphinx搜索引擎执行查询
谢谢 我用狮身人面像搜索过颜色。就在那里。它是如何工作的? 非常简单,对于每种颜色,我都将其主色存储在数据库中。用于sphinx索引的数据库表具有名为colors的列,其内容按以下方式填充:
/**
* This part was changed based on formula
*
* It fits here better than algorithm
*
* http://en.wikipedia.org/wiki/Tag_cloud
* 15400 is number of maximum matches based on indexed thumbnail size 120x130 px.
* */
$max = 15400;
$min = 25;
$rmax = 50;
$rmin = 1;
$colorIndex = array();
foreach ($colorsMaximumImage as $color)
{
$colorIndexString = trim(str_repeat(' pld'.$color['pallete_id'],round((($rmin*($color['count']-25))/($max-$min))*100)));
if ($colorIndexString != '')
$colorIndex[] = $colorIndexString;
}
我在这里使用了标记公式,以避免非常大的索引。Count是自定义托盘项目匹配的次数。它工作得很好,一些实时网站的例子可以在项目主页上找到。这样我们可以同时按颜色和关键字进行搜索:。目前我仍在尝试获得最佳效果…我已经用sphinx搜索过颜色。就在那里。它是如何工作的? 非常简单,对于每种颜色,我都将其主色存储在数据库中。用于sphinx索引的数据库表具有名为colors的列,其内容按以下方式填充:
/**
* This part was changed based on formula
*
* It fits here better than algorithm
*
* http://en.wikipedia.org/wiki/Tag_cloud
* 15400 is number of maximum matches based on indexed thumbnail size 120x130 px.
* */
$max = 15400;
$min = 25;
$rmax = 50;
$rmin = 1;
$colorIndex = array();
foreach ($colorsMaximumImage as $color)
{
$colorIndexString = trim(str_repeat(' pld'.$color['pallete_id'],round((($rmin*($color['count']-25))/($max-$min))*100)));
if ($colorIndexString != '')
$colorIndex[] = $colorIndexString;
}
我在这里使用了标记公式,以避免非常大的索引。Count是自定义托盘项目匹配的次数。它工作得很好,一些实时网站的例子可以在项目主页上找到。这样我们可以同时按颜色和关键字进行搜索:。目前我仍在尝试获得最佳效果…我的方法是使用imagemagick生成直方图,提取10种最常见和10种最主要的颜色,并将其存储在mysql中。因此,我必须为斯芬克斯中的每张照片索引10行——这种方法的索引非常大。例如,您可以通过单击信息框中的一个颜色仪表来查看它。不管怎样,谢谢你的回答,我给它一个“是”,因为它对我很有帮助。非常感谢!还有一件事。Sphinx自0.9.9以来支持类选择过滤。所以它完全适合你的需要。我正在研究一个类似问题的解决方案。虽然这两种方法都很有用,但我想知道是否有人想出了一种方法,可以像Remdex那样存储每条记录上的所有颜色信息,而不必使用预定义的调色板。我认为Remdex的解决方案只允许通过精确匹配进行搜索,对吗?首先,我认为你们可以使用pdl,并通过密度重复它。当然,通过这种方式,文本索引可以显著增长,只需进行实验即可获得良好的结果。在我的方法中,搜索不必精确匹配。我的方法是用imagemagick生成一个直方图,提取10种最常见的颜色和10种最主要的颜色,并将它们存储在mysql中。因此,我必须为斯芬克斯中的每张照片索引10行——这种方法的索引非常大。例如,您可以通过单击信息框中的一个颜色仪表来查看它。不管怎样,谢谢你的回答,我给它一个“是”,因为它对我很有帮助。非常感谢!还有一件事。Sphinx自0.9.9以来支持类选择过滤。所以它完全适合你的需要。我正在研究一个类似问题的解决方案。虽然这两种方法都很有用,但我想知道是否有人想出了一种方法,可以像Remdex那样存储每条记录上的所有颜色信息,而不必使用预定义的调色板。我认为Remdex的解决方案只允许通过精确匹配进行搜索,对吗?首先,我认为你们可以使用pdl,并通过密度重复它。当然,通过这种方式,文本索引可以显著增长,只需进行实验即可获得良好的结果。在我的方法中,搜索不必精确匹配。我刚刚用gallery代码用sphinx扩展搜索实现了它。