Search 如何使用sphinx实现颜色搜索?

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

使用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中存储颜色并使用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扩展搜索实现了它。