将 unicode 字符串拆分为单独的单词。可以用'space'拆分吗?

Splitting unicode string in separate words. Can you use 'space' to split?

我正在开发支持 Unicode 的全文搜索后端。

(数据库 PostgreSQL 9.5,PHP7,Ubuntu 17,Apache2)。

数据库正确索引(使用 tsearch)相关文本数据。到目前为止,一切都很好。

现在我需要使用用户提供的搜索词来搜索数据。我的第一个想法是使用 explode(" ", $rawseachstring) 拆分搜索字符串,然后搜索单个单词,生成具有最佳匹配的结果集。

然而,Unicode 似乎定义了一大堆 'space-like' 个字符,请参阅下一篇文章:

http://jkorpela.fi/chars/spaces.html

在尝试理解该页面(由 Unicode 大师 Korpela 撰写)之后,我想知道在 ' ' 上拆分字符串是否有点幼稚。

是否应该对所有可能的 'space-like' 个字符进行拆分?

如果您希望有这些空格,那么您可以使用 preg_split 来分解多个字符的正则表达式。

$words = preg_split('/regex/', $string);

但是考虑使用 LIKE 关键字进行查询以仅获取可能匹配的结果。

使用 unicode property for spaces \p{Zs}

$words = preg_split('/\p{Zs}/u', $rawseachstring);