Google Sites API全文搜索不适用于非西方语言


67

在我的JavaEE应用程序中,我使用基于Atom的Google Sites API从非公开的Google Site检索内容。本质上,我们将Google Site用作轻量级CMS,并且在应用程序中,我使用API​​检索网站内容以提供给我的在线帮助系统。我已经进行了一段时间的设置,并且工作顺利。

问题

在我的应用程序中,我需要向在线帮助系统添加全文搜索功能。我知道此功能请求有时会出现,因此在决定使用Google Sites托管我的内容时,我检查了Sites API是否支持全文搜索。确实如此。例如,以下URL将在整个站点中搜索my-site包含关键字的页面user

https://sites.google.com/feeds/content/my.doma.in/my-site?q=user

这有效,并且给了我预期的结果页面。但这仅适用于用西方语言或更具体而言用空格和标点符号分隔标记/单词的语言编写的内容。当我对日语内容进行类似的搜索时,搜索关键字ユーザー

https://sites.google.com/feeds/content/my.doma.in/my-site?q=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC

我只会得到结果页面,其中搜索词以裸字符串显示,即以空格或标点符号分隔。由于日语是用连续脚本编写的语言,因此这还不够。包含以下内容的页面:

情报自身のユーザー基本情报の确认

将不会显示在结果中。因此,似乎在幕后使用的搜索索引是根据“西方”词汇规则创建的,日语内容未正确标记。但是,当我从Google网站的“搜索此网站”字段中搜索相同的关键字时,我确实得到了正确的结果。我得出结论,存在正确的标记化索引,但是似乎无法将其用于基于API的搜索

到目前为止我尝试过的

为了解决这种情况,到目前为止,我已经探索了以下几种途径:

  • 我尝试在Google协作平台本身中查找语言设置。有一个通用的UI语言设置,该设置已设置为日语,并且对API查询结果没有影响。没有按页面或按模板的语言设置来强制索引器/标记器的手。
  • 我尝试用双引号("ユーザー")引用搜索字符串。
  • 我尝试过使用通配符(*ユーザー*)。
  • 我尝试对其他Google API中常见的URL使用其他语言参数:langhl(界面语言),rl(结果语言),..
  • 我曾尝试创建Google自定义搜索引擎,但似乎无法使其在非公开的Google网站上正常工作。

所以...

我的想法很快就用光了。在最坏的情况下,我将不得不自己检索,标记和索引所有内容,并使其可搜索。由于这需要大量的精力,因此我想知道是否有人遇到相同的问题并找到了可接受的解决方法或解决方案。


更新1

我尚未找到解决此问题的理想解决方案,因此我在Google Apps API问题跟踪器上提出了一个缺陷:https : //code.google.com/a/google.com/p/apps-api-issues/issues / detail?id = 3780

更新2

经过一番来回的摸索,Google的工程师承认该问题确实存在,并已“内部提交”。缺陷票一直停留在被分流状态至今。如果您像我一样对解决此问题感兴趣,请花一点时间在Google的问题跟踪器上对其加注/投票。


3
请让我们保持最新!多语言支持很重要(我认为)
Danielson

1
您是否考虑过抓取“搜索此站点”字段结果页面?虽然只有一种解决方法,但比实现自己的搜索引擎要容易得多。
gidim

1
@gidim我已经简要考虑过了,但是对于我正在处理的应用程序类型,它有点太脆弱了。Google对他们的大多数应用程序进行了频繁更改,而这种更改导致我方功能下降的风险过高。即使我能够快速解决Google在开发中所做的任何更改,我的修补程序也要花很长时间才能投入生产。因此,好的建议对我来说并不可行。
罗比·科尼利森

1
@RobbyCornelissen您说得通。如果您尝试使用类似的功能,请查看Google网站移动版。一般而言,移动版本的更改频率较低。
gidim

1
我想投票给Update,但是SO只让我投票一次:p
Danielson

Answers:


3

我知道在您的应用程序未达到定义的期限时等待主体支持来处理API错误时的感觉。您所描述的问题听起来确实像是一个错误,因此对于“干净”的解决方案,您必须等待Google Sites团队人员解决此错误(我已经赞成:)),然后您才可以使用Search API。

但是,与此同时,我认为您应该尝试一些解决方法。我可能会建议您使用另一种解决方案,该解决方案无法满足您100%的需求,但可能会有用。例如,将您的网站配置为使用丰富的搜索API将汇总数据供稿显示给供稿处理器-它可能是RSS提要,其中包含Feedly烧录的Google网站中的所有文章,并具有良好的多语言搜索API支持(搜索以下内容)流)以及强大的身份验证来保护您的数据隐私。

作为一名架构师,我知道这不是解决该问题的适当方法,但是一旦它帮助我构建了一个完全可搜索的应用程序,该应用程序使用俄语和乌克兰语区域设置来聚合来自100多个不同数据源的数据。

在您的应用程序开发中祝您好运,并让我知道该解决方案是否对您有帮助!:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.