用于浮点值的 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

公司名称仍包含在全文搜索的字段中。