我想使MySQL与日本和中国文字的全文检索工作,以及任何其他语言。 问题是,这些语言和可能其他人通常不字与字之间的空白。 搜索是没有用的,当你必须键入同一个句子中是在文本中。
我不能只是把每一个人物之间的空间,因为英语一定工作了。 我想用PHP或MySQL来解决这个问题。
我可以配置MySQL来识别哪些应该是自己的索引单位字符? 是否有可以识别这些字符,所以我可以只是把周围空间的指数PHP模块?
更新
的部分解决方案:
$string_with_spaces =
preg_replace( "/[".json_decode('"\u4e00"')."-".json_decode('"\uface"')."]/",
" $0 ", $string_without_spaces );
这使得字符类出的至少一些我需要特殊对待的字符。 我也许应该提到,这是可以接受的Munge时间索引的文本。
有谁知道字符的所有范围我需要周围插入空格?
此外,必须有代表PHP这些字符更好的,可移植的方式? 在文字中的Unicode源代码是不理想; 我不会承认所有的角色; 他们可能不会呈现在所有计算机上我一定要使用。
所提到的语言断词需要语言学方法 ,对于使用字典中的基本规则所产生的理解沿例子之一。
我听说过它只是每一个字拆分为单独的词,在中国,简单地将通过最终用户提供的搜索条件相同的“符号化”比较成功的全文搜索应用程序。 然后,搜索引擎提供了用于其中以相同的次序作为搜索条件提供字符字的文件更好的排名。 我不知道这可以扩展到语言,如日语,作为平假名和Katagana字符集使文字更接近欧洲语言的短字母。
编辑 :
资源
该断词的问题,以及相关的问题,是如此的不平凡的是整本书都写了。 例如见CJKV信息处理 (CJKV代表中国,日本,朝鲜和越南,你也可以在许多文字使用CJK关键字,因为,越南不讨论)。 又见断字在日语中是很难关于这个主题的一个寻呼机。
善解人意,大多数涉及这个话题的材料上写的是底层的本地语言之一,因此人们限量使用的是没有在这些语言相对流畅。 出于这个原因,并帮助您验证搜索引擎,一旦你开始实现分词的逻辑,你应该寻求的母语或两个的帮助。
各种思想
你确定哪些系统意味着一个词中断字符的想法(说引号,括号,连字符般的人物和这样的)好,这可能是由某些字级的专业断路器使用一个启发。 然而,你应该寻求权威人士这样的列表,而不是组装一个从无到有,基于传闻的调查结果。
一个相关的想法是假名至汉字转换 ,打破的话(但我猜不是周围的其他方法),并可能在平假名到片假名或反之亦然过渡。
无关的断字正确,指数可能会从每一个,比方说,平假名字符到相应的片假名的系统转换[-or不可─;-)]受益。 只是一个没有受过教育的想法! 我不知道有足够的了解日语知道是否会有所帮助; 直觉上,这将是松散类似于强调字母的系统转换和对等对应的非强调字母,与几个欧洲语言实践。
也许这个想法我前面提到的,系统的索引个性(和排名搜索结果基于其接近订单明智的搜索条件的),通过保持连续的假名字符一起可以稍微改变,例如,然后其他一些规则......并产生一个不完美,但足够实用的搜索引擎。
不要失望,如果不是这种情况...至于说这是远离琐碎,它可能会节省您的时间和金钱,从长远来看,通过采取暂停和读一两本书。 另一个原因,试图了解更多的“理论”和最佳实践,是此刻的你似乎集中在断字 ,但很快,搜索引擎还可以从所产生意识中受益; 实际上这两个问题,语言至少,相关的,并且可以从串联正在处理中受益。
在这个令人烦恼的,但值得努力的好运气。
一年后,你可能不需要这个更多,但以下页面上的代码会为你想要的(ED)做一些提示:
http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/spamfilter/japanese-tokenizer.el.txt
如果您在自己的搜索上述职位后取得的任何进展,我相信其他人有兴趣知道。
(编辑说有一个更好的答案在这里: ?如何日文字符的任意汉字或假名分类 )