Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带日语furigana的MySQL regexp_Mysql_Regex_Cjk_Ruby Characters - Fatal编程技术网

带日语furigana的MySQL regexp

带日语furigana的MySQL regexp,mysql,regex,cjk,ruby-characters,Mysql,Regex,Cjk,Ruby Characters,我有一个庞大的词汇数据库(~2700个条目)。每行包含一个英语单词、日语对应词以及与此问题无关的其他数据。我已经创建了一个工具,可以在表中搜索和显示结果,但是furigana有一个小问题 日语句子由汉字(汉字)和拼音(假名)混合而成。不是每个人都能读每一个汉字,有时同一个汉字有多重读物。在这些情况下,光假名位于汉字之上-这称为古假名: 我以以下格式将这些语音读物与标签一起呈现给用户: <ruby> <rb>勉強</rb> <!-- the k

我有一个庞大的词汇数据库(~2700个条目)。每行包含一个英语单词、日语对应词以及与此问题无关的其他数据。我已经创建了一个工具,可以在表中搜索和显示结果,但是furigana有一个小问题

日语句子由汉字(汉字)和拼音(假名)混合而成。不是每个人都能读每一个汉字,有时同一个汉字有多重读物。在这些情况下,光假名位于汉字之上-这称为古假名:

我以以下格式将这些语音读物与标签一起呈现给用户:

<ruby>
  <rb>勉強</rb>    <!-- the kanji -->
  <rp>(</rp>      <!-- define where the phonetic part starts in the string -->
    <rt>べんきょう</rt>   <!-- the phonetic kana itself -->
  <rp>)</rp>      <!-- define the end of the phonetic part -->
</ruby>する        <!-- the last part is already phonetic so needs no ruby -->
括号之间的任何内容都是紧接在它前面的汉字的读数。以这种方式存储字符串允许不支持ruby标记的浏览器(比如,令人惊讶的是,Firefox)回退

所有这些都很好,但是当用户在搜索时问题就来了。如果他们搜索

勉強
勉強する
然后它就会出现。但如果他们试图寻找

勉強
勉強する

它不起作用,因为在数据库中有一个字符串定义了中间的语音读音。

上面示例中的全宽括号仅用于表示该语音脚本。有鉴于此,我正在寻找一种方法,从本质上告诉MySQL搜索忽略它在圆括号中找到的任何内容。我对如何在MySQL中进行最简单的查询有基本的了解,但我肯定不是专家。我看过这些文档,但是(至少对我来说)它们不是很友好。也许对初学者不太友好。我认为它可能与涉及正则表达式的某种构造有关,但我不知道如何实现

有什么方法可以实现我想要的吗?

如中所述,如果没有用户定义的函数(您只能替换显式序列),似乎是不可能的

相当肮脏的解决方案:你可以容忍两个连续的日语字符之间的任何事情,
LIKE'勉%強%す%る'。我从来没有这样建议过


或者,您可以在表中保留一个可选字段,该字段可能包含使用furigana的版本。

我建议不要使用LIKE查询,因为每个字符之间必须有一个%的间隔(因为您不知道furigana何时出现),这可能会导致误报(例如,如果有效字符出现在勉 及強).

正如@Jill-Jênn Vie breifly所提到的,我建议添加一个新的专栏,用furigana保存文本

我正在开发一个对韩语文本进行搜索的应用程序。问题是韩语变位会改变字符。例如:

하다 + 아요 = 해요
"하다" 是字典形式的动词“to do”和“to”아요“这是标准的礼貌形式转换。你大概是说日语的,所以你知道这种礼貌形式有多普遍!注意하 更改为해. 显然,如果用户试图搜索“하다“在字符串中”해요,他们找不到。但如果用户希望查看的所有实例하다“在语料库中,我们需要能够返回它

我们的解决方案是两列:“形式”(共轭形式)和“解析字符串”,它们代表해요“作为”하다+아요“。你可以采取类似的方法,制作第二列,包含你的句子,而不包含furigana

这种方法的主要缺点是,实际上您的数据库大小增加了一倍,在输入数据时需要特别注意两列具有相同的数据(我在数据库中发现了几行,其中表单和分析字符串具有不同的单词)。优点是您可以轻松搜索数据,同时忽略furigana


这是标准的“大小与性能”权衡。哪个更重要:数据库的大小还是执行时间?我能想到的任何其他解决方案都包括返回太多行,然后分别分析它们。

是的,我用LIKE做了一些实验(理论上,纸上)正如你所说,我能想到的唯一方法是在每个字符之间插入%,这似乎是错误的。数据库没有那么大,所以我想最好的办法是你所说的,创建一个单独的列。现在你这么说似乎很简单:-)干杯!顺便说一句,详细的答案是+1。顺便说一句,虽然我不会说韩语,但我的大学论文部分是关于韩语形态学的,所以我确实感觉到了你的痛苦;这是我第一次想起日语其实不那么难……对不起,我刚刚意识到你是先回答的!额外的领域似乎是我要走的路anks!顺便说一句,我赞扬你的努力!