Sphinx MVA用于浮点值

问题描述 投票:0回答:1

我有一个表,其中有很多表:

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不支持浮点类型字段,sql_joined_field被删除。我怎么解决这个问题?除了GROUP_CONCAT()之外,也许还有其他解决方案吗?

sphinx
1个回答
0
投票

我认为,最简单的方法是将狮身人面像的“文件”安排为地址,而不是严格地陪伴。即,唯一的文档ID是地址表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_flaot = latitude
sql_attr_float = longitude

Ten GEODIST将几乎直接起作用。...

SELECT *, GEODIST(0.659298124, -2.136602399, latitude, longitude) AS distance 
   FROM addressIndex WHERE distance < 10000 GROUP BY company_id;

或者如果要每个公司地址,请不要包含GROUP BY

公司名称仍作为全文搜索字段包含在内。

© www.soinside.com 2019 - 2024. All rights reserved.