Joe*_*way 16 php full-text-search tokenize cjk wordbreaker
我想用日文和中文文本以及任何其他语言进行MySQL全文搜索工作.问题是这些语言和其他语言通常不会在单词之间留有空格.如果必须键入与文本中相同的句子,则搜索无用.
我不能只在每个角色之间放一个空格,因为英语也必须起作用.我想用PHP或MySQL解决这个问题.
我可以配置MySQL来识别应该是自己的索引单元的字符吗?是否有一个PHP模块可以识别这些字符,所以我可以在它们周围为索引抛出空格?
更新
部分解决方案:
$string_with_spaces =
preg_replace( "/[".json_decode('"\u4e00"')."-".json_decode('"\uface"')."]/",
" $0 ", $string_without_spaces );
Run Code Online (Sandbox Code Playgroud)
这使得一个角色类至少出现在我需要特别处理的一些角色中.我应该提一下,搞定索引文本是可以接受的.
有没有人知道我需要插入空格的所有字符范围?
此外,必须有一种更好的,可移植的方式来表示PHP中的这些字符?Literal Unicode中的源代码并不理想; 我不会认出所有人物; 它们可能无法在我必须使用的所有机器上渲染.
mjv*_*mjv 15
对于所提到的语言而言,破坏需要语言学方法,例如使用字典以及理解基本词干规则的方法.
我听说过相对成功的全文搜索应用程序,它简单地将每个单个字符拆分为一个单独的单词,中文,简单地应用最终用户提供的搜索条件的相同"标记化".然后,搜索引擎为文档提供更好的排名,这些文档以与搜索标准相同的顺序提供字符 - 单词.我不确定这可以扩展到日语这样的语言,因为Hirakana和Katagana字符集使文本更类似于具有短字母的欧洲语言.
编辑:
资源
这个单词破解问题,以及相关的问题,是非常重要的,整本书都是关于它的.例如,参见CJKV信息处理(CJKV代表中文,日文,韩文和越南文;您也可以使用CJK关键字,因为在许多文本中,不讨论越南语).另请参阅Word Breaking in Japanese对于此主题的单页很难.
理解上,涉及该主题的大部分材料都是用其中一种基础母语编写的,因此对于没有这些语言相对流畅性的人来说,它们的用途有限.出于这个原因,并且一旦您开始实施断字逻辑,还要帮助您验证搜索引擎,您应该寻求一两个母语人士的帮助.
各种想法
你的想法鉴定系统意味着一个词中断字符(说引号,括号,连字符般的人物和这样的)好,这可能是由某些字级的专业断路器使用一个启发.然而,你应该寻找这样一个列表的权威来源,而不是根据轶事发现从头开始组装.
一个相关的想法是在断词假名到汉字的转换(但我猜不是周围的其他方法),并可能在平假名到片假名或反之亦然过渡.
与单词破解无关,索引可以[ - 或可能不 - ;-)]从每个例如平假名字符到相应的片假名字符的系统转换中受益.只是一个没有受过教育的想法!我不太了解日语,知道这是否有帮助; 直观地说,它与松散的字母的系统转换类似,如同用几种欧洲语言实践的相应的非强调字母.
也许我之前提到过的,系统地索引单个字符(以及根据搜索条件顺序对搜索结果进行排序)的想法可以略微改变,例如通过将连续假名字符保持在一起,然后是其他一些规则...并产生一个不完美但实用的搜索引擎.
不要失望,如果不是这种情况...至于说这是远离琐碎,它可能会节省您的时间和金钱,从长远来看,通过采取暂停和读一两本书.尝试学习更多"理论"和最佳实践的另一个原因是,目前您似乎专注于破坏词语,但很快,搜索引擎也可能从词干意识中受益; 事实上,这两个问题在语言上至少是相关的,并且可以从串联处理中受益.
祝你好运,但值得努力.