首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按相似词分组

按相似词分组
EN

Stack Overflow用户
提问于 2016-08-25 22:27:50
回答 1查看 203关注 0票数 1

有没有办法按文本字段对表进行分组,因为这个文本字段并不总是完全相同的?

示例:

代码语言:javascript
复制
select city_hotel, count(city_hotel)
from hotels, temp_grid
where st_intersects(hotels.geom, temp_grid.geom)
and potential=1
and part=4
group by city_hotel
order by (city_hotel) desc

我得到的输出是预期的,例如,City name和count:

代码语言:javascript
复制
    "Vassiliki ";1
    "Vassiliki";1
    "Vassilias, Skiathos";1
    "Vassilias";5
    "Vasilikí";25
    "Vasiliki";23
    "Vasilias";1

但是我想对这个字段进行更多的分组,并且只得到一个"Vasiliki“(或者一个包含所有元素的数组,这不是问题),以及包含它们之间类似内容的所有单元格的计数。

我不知道这是否可能。也许有一些文本分析的功能,或者类似的功能?

EN

回答 1

Stack Overflow用户

发布于 2016-08-25 22:48:26

代码语言:javascript
复制
SELECT COUNT(*), `etc` FROM table GROUP BY textfield LIKE '%sili%'; 

// The '%' is a SQL wildcard, which matches as many of any character as required.

你可以这样做,为“like”选择一个最适合你用户使用的拼写的单词。

可以对此有所帮助的方法是做一个

代码语言:javascript
复制
SELECT COUNT(*), textfield FROM table GROUP BY textfield ORDER BY textfield;

并为您的单词选择最“平均”的拼写。否则,您将开始进行一些语言处理,为此,您将需要在SQL之外编写一些代码。

这可能类似于https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance

找到在任意误差范围内相同的单词。

这里有一个MySQL实现,您应该能够根据需要转置https://stackoverflow.com/a/6392380/1287480

(瑞士信贷https://stackoverflow.com/a/3515291/1287480)

(个人对该主题的思考)

你真的很想考虑限制来自用户的输入,这可能会在第一时间给你带来这个问题。为用户提供一个可供选择的位置列表要比将潜在的“脏”信息推入数据库要好得多。这最终总会以你试图在以后清理信息而告终。这个问题多年来一直困扰着许多人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39148003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档