在 MariaDB 10 中作为全文搜索词边界的下划线

Underscore as fulltext search word boundaries in MariaDB 10

我们假设 table node 有一个 varchar 列 description 在 MariaDb 10 中带有全文索引。

查询

 select description from node where match(description) against('night');

将匹配

等描述值
Night-and-day
What-a-wonderful-night
What a wonderful night

但不会匹配

What_a_wonderful_night

现在我的问题是:似乎 space ( ) 和连字符 (-) 被认为是单词边界,但下划线 (_) 不是。有没有办法通过配置或在查询内部使下划线也成为单词边界?

更改 ha_innobase.cc 中的宏 true_word_char():

-#define true_word_char(c, ch) ((c) & (_MY_U | _MY_L | _MY_NMR) || (ch) == '_')
+#define true_word_char(c, ch) ((c) & (_MY_U | _MY_L | _MY_NMR))

并重建 MariaDB。