sphinx - 用于浮点值的 Sphinx MVA
问题描述
我有一张桌子有很多桌子:
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() 之外还有其他解决方案?
解决方案
我认为您最简单的方法是将您的狮身人面像“文件”安排为地址,而不是严格的公司。即,唯一的document-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_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
.
公司名称仍包含在全文搜索字段中。
推荐阅读
- typescript - 检查 useRef 是否可选时编译失败
- python - While 循环和一些帮助
- javascript - 为什么 setState() 在循环调用期间不响应更新状态?
- webpack - 无法使用 copy-webpack-plugin 将静态文件添加到 electron-forge
- python - 同一个回调,多线程
- python - 为什么 bot.commands 在 discord.py 中不起作用?
- mysql - 具有空值的 MySQL 浮点列错误 1265 (01000):列的数据被截断
- python - Python DataFrame 问题
- visual-studio-code - 如何在 VS Code 中为 .jsx 文件启用自动更漂亮的格式?
- javascript - 如何获得所有动态输入的平均值