Google Sites API全文search不适用于非西方语言
在我的JavaEE应用程序中,我使用基于Atom的Google Sites API从非公开的Google Site中检索内容。 实质上,我们使用Google Site作为轻量级的CMS,在应用程序中,我使用API来检索网站内容,为我的在线帮助系统提供内容。 我已经安装了一段时间,它的工作顺利。
问题
在我的应用程序中,我需要将全文searchfunction添加到在线帮助系统中。 我知道这个function请求会在某个时候出现,因此在决定让Google协作平台托pipe我的内容时,我检查了Sites API是否支持全文search。 它确实 。 例如,下面的URL将search整个网站my-site
的页面包含关键字user
。
https://sites.google.com/feeds/content/my.doma.in/my-site?q=user
这工作,并给我预期的结果页面。 但是,这样做只适用于用西方语言编写的内容 ,或者更确切地说,是用空格和标点符号来区分标记/单词的语言。 当我对我的日语内容进行类似的search时,search关键词ユーザー
:
https://sites.google.com/feeds/content/my.doma.in/my-site?q=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC
我只会search结果页面,其中search词显示为空白string,即由空格或标点符号分隔。 由于日语是一种连续写作的语言,这是不够的。 包含的页面,例如:
ご自身のユーザー基本情报の确认
将不会显示在结果中。 因此,在幕后使用的search索引似乎是基于“西方”词汇规则创build的,并且日文内容没有正确标记。 但是,当我从Google网站的search此网站字段中search相同的关键字时,我确实得到了正确的结果。 我得出这样的结论: 存在一个正确的标记化索引,但似乎不可能将其用于基于API的search 。
到目前为止,我已经尝试过
为了弥补这种情况,这些是我迄今探索的途径:
- 我试过在Google协作平台本身寻找语言设置。 有一个通用的UI语言设置已经设置为日语,并没有影响API查询结果。 没有每页或每个模板的语言设置来强制索引器/标记器的手。
- 我试过用双引号引用searchstring(
"ユーザー"
)。 - 我试过包括通配符(
*ユーザー*
)。 - 我已经尝试使用其他Google API中常见的URL的其他语言参数:
lang
,hl
(界面语言),rl
(结果语言),.. - 我试过创build一个Google 自定义search引擎 ,但似乎无法使它在非公开的Google网站上运行。
所以…
我在这里很快就没有想法了。 在最糟糕的情况下,我将不得不自行检索,标记和索引所有内容,并使其成为可search的。 由于这将需要大量的努力,我想知道是否有人遇到同样的问题,并find了可接受的解决方法或解决办法。
更新1
我还没有find这个问题的一个优雅的解决scheme,所以我提出了谷歌应用程序API问题跟踪器上的缺陷: https : //code.google.com/a/google.com/p/apps-api-issues/issues /细节?ID = 3780
更新2
谷歌的工程师经过一番回顾之后,已经确认这个问题确实存在,并且“内部提出了这个问题” 。 从那以后,缺陷票一直处于分类状态。 如果您像我一样有兴趣看到此问题得到解决,请花点时间在Google的问题跟踪器上对其进行投票。
我知道等待支持API来处理API错误的时候,你的应用程序将没有达到最终期限。 您所描述的问题确实听起来像一个错误,所以对于“干净的”解决scheme,您必须等到Google协作平台团队成员解决此问题(我已经提高了:)后才能使用Search API。
但是,与此同时,我认为你应该尝试一些解决方法。 我可能会build议你一个不同的解决scheme,不会满足你的需求100%,但可能是有用的。 例如,configuration您的站点以向search引擎处理器提供丰富的searchAPI公开的聚合数据馈送 – 它可能是一个RSS源,其中来自Google站点的所有文章都被Feedly所烧毁,并且具有良好的多语言searchAPI支持。一个stream )以及强大的身份validation,以保护您的数据隐私。
作为架构师,我知道这不是一个合适的解决scheme,但是一旦它帮助我构build一个完全可search的应用程序,它使用俄语和乌克兰语言环境汇总来自100多个不同数据源的数据。
在你的应用程序开发中祝你好运,让我知道这个解决scheme是否帮助你! 🙂