情况如下:
我有一个有40.000个城市的数据库。这些城市有某些类型的有价值的房产。例如“山”或“海滩”。如果一个城市有很多山,那么山的价值就会很高,如果山少了,那么山的数量就会更少。
具有城市名称、属性和值的表:

这样,我就有了一个表,表中包含了所有这些属性的平均值。
我需要发生的事情:,我希望用户搜索有一个或多个属性的城市,找到最佳匹配,并附加一个分数从0- 100到它。
我这样做的方式如下:
1. I首先获得属性的25%、50%和70%的值:
_var_[property]_25 = [integer]
_var_[property]_50 = [integer]
_var_[property]_70 = [integer]2.然后我需要使用这个算法:
_var_user_search_for_properties = [mountain,beach]
_var_max_property_percentage = 100 / [properties user search for]
_var_match_percentage = 0
for each _var_user_search_for_properties
if [property] < _var_[property]_25 then
_var_match_percentage += _var_max_property_percentage
elseif [property] < _var_[property]_50 then
_var_match_percentage += _var_max_property_percentage / 4 * 3
elseif [property] < _var_[property]_75 then
_var_match_percentage += _var_max_property_percentage / 4 * 2
elseif [property] < 0 then
_var_match_percentage += _var_max_property_percentage / 4 * 1
end if
next
order all rows by _var_match_percentage desc 的问题是:用MySQL做这件事是可行的吗?如何计算这个“匹配百分比”?
或者,将所有行和索引从数据库中取出并通过.NET循环它们会更快吗?
发布于 2014-12-21 02:04:01
如果百分比可以存储在数据库中,则可以尝试MySQL的LIMIT子句。见http://www.mysqltutorial.org/mysql-limit.aspx。
https://stackoverflow.com/questions/27586079
复制相似问题