用于浮点值的 Sphinx MVA
Sphinx MVA for float values
我有一个 table 有很多 table:
company
id | name
---------
1 | a
2 | b
3 | c
company_address
id | company_id | latitude | longitude |
-------------------------------------------------------
1 | 1|0.9684982117632206|1.1395506188216191|
2 | 1|0.7874478257111129|0.6816976456543681|
3 | 2|0.9758854923552117| 0.744264348306201|
4 | 2|0.7860300249465478|0.6804121583003967|
5 | 2|0.7874478257111129|0.6816976456543681|
6 | 3|0.9684982117632206|1.1395506188216191|
sql_attr_multi
不支持float类型字段,sql_joined_field
被移除。我怎么解决这个问题?也许除了 GROUP_CONCAT()?
之外还有其他解决方案
我认为最简单的方法是将您的狮身人面像 'documents' 安排为地址,而不是严格意义上的公司。即,唯一的文档 ID 是地址 table ID。 company_address.id
将公司 ID 保留为一个属性,这样 IF 组就可以真正只希望每个公司获得一个结果。
sql_query = SELECT a.*, c.name FROM company_address a INNER JOIN company c ON (c.id = company_id)
sql_attr_uint = company_id
sql_attr_float = latitude
sql_attr_float = longitude
然后 GEODIST
将直接工作...
SELECT *, GEODIST(0.659298124, -2.136602399, latitude, longitude) AS distance
FROM addressIndex WHERE distance < 10000 GROUP BY company_id;
或者,如果您想要每个公司地址,请不要包含 GROUP BY
。
公司名称仍包含在全文搜索的字段中。
我有一个 table 有很多 table:
company
id | name
---------
1 | a
2 | b
3 | c
company_address
id | company_id | latitude | longitude |
-------------------------------------------------------
1 | 1|0.9684982117632206|1.1395506188216191|
2 | 1|0.7874478257111129|0.6816976456543681|
3 | 2|0.9758854923552117| 0.744264348306201|
4 | 2|0.7860300249465478|0.6804121583003967|
5 | 2|0.7874478257111129|0.6816976456543681|
6 | 3|0.9684982117632206|1.1395506188216191|
sql_attr_multi
不支持float类型字段,sql_joined_field
被移除。我怎么解决这个问题?也许除了 GROUP_CONCAT()?
我认为最简单的方法是将您的狮身人面像 'documents' 安排为地址,而不是严格意义上的公司。即,唯一的文档 ID 是地址 table ID。 company_address.id
将公司 ID 保留为一个属性,这样 IF 组就可以真正只希望每个公司获得一个结果。
sql_query = SELECT a.*, c.name FROM company_address a INNER JOIN company c ON (c.id = company_id)
sql_attr_uint = company_id
sql_attr_float = latitude
sql_attr_float = longitude
然后 GEODIST
将直接工作...
SELECT *, GEODIST(0.659298124, -2.136602399, latitude, longitude) AS distance
FROM addressIndex WHERE distance < 10000 GROUP BY company_id;
或者,如果您想要每个公司地址,请不要包含 GROUP BY
。
公司名称仍包含在全文搜索的字段中。