Rob*_*sen 67 full-text-search google-sites tokenize google-data-api
在我的JavaEE应用程序中,我使用基于Atom的Google Sites API从非公开的Google站点检索内容.从本质上讲,我们将Google网站用作轻量级CMS,并且在应用程序中我使用API检索网站内容以提供我的在线帮助系统.我有一段时间没有这个设置,它的工作没有任何障碍.
在我的应用程序中,我需要为在线帮助系统添加全文搜索功能.我知道此功能请求会在某个时刻出现,因此在决定使用Google协作平台托管我的内容时,我检查了Sites API是否支持全文搜索.确实如此.例如,以下URL将在整个站点中搜索my-site包含该关键字的页面user.
https://sites.google.com/feeds/content/my.doma.in/my-site?q=user
Run Code Online (Sandbox Code Playgroud)
这有效,并给我预期的结果页面.但它只针对用西方语言编写的内容,或者更具体地说,用空格和标点符号分隔标记/单词的语言.当我在日语内容上运行类似的搜索时,搜索关键字????:
https://sites.google.com/feeds/content/my.doma.in/my-site?q=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC
Run Code Online (Sandbox Code Playgroud)
我将只获得结果页面,其中搜索词显示为裸字符串,即由空格或标点符号分隔.由于日语是一种用脚本连续编写的语言,这还不够.包含的页面,例如:
自身ごのユーザー基本情报の确认
不会出现在结果中.因此,似乎在幕后使用的搜索索引是基于"西方"词汇规则创建的,并且日语内容未正确标记化.但是,当我从Google网站的" 搜索此网站"字段中搜索相同的关键字时,我确实得到了正确的结果.我得出结论,存在一个正确的标记化索引,但似乎不可能将它用于基于API的搜索.
为了解决这种情况,这些是我迄今为止探索过的途径:
"????").*????*).lang,hl(界面语言), rl(结果语言)..我在这里很快就没有想法了.在最糟糕的情况下,我最终将不得不自己检索,标记和索引所有内容,并使其可以通过这种方式进行搜索.由于这需要大量工作,我想知道是否有人遇到过同样的问题,并找到了可接受的解决方法或解决方案.
我还没有找到针对此问题的优雅解决方案,因此我在Google Apps API问题跟踪器上提出了一个缺陷:https://code.google.com/a/google.com/p/apps-api-issues/issues /细节?ID = 3780
在经过一些反复来回之后,谷歌的工程师们已经承认问题确实存在于所描述的范围内,并且已经"在内部提交了问题".缺陷票一直停留在被分流状态至今.如果您和我一样有兴趣看到此问题已解决,请花点时间在Google的问题跟踪器上加注星标/投票.
我知道当您的应用程序无法满足定义的最后期限时,等待某人支持处理 API 错误时的感觉。您描述的问题听起来确实像一个错误,因此对于“干净”的解决方案,您必须等到 Google 协作平台团队人员解决此错误(我已经投票了:)),然后您将能够简单地使用搜索 API。
然而,与此同时,我认为你应该尝试一些解决方法。我可能会建议您一个不同的解决方案,它不能 100% 满足您的需求,但可能有用。例如,配置您的网站以将聚合数据提要公开给具有丰富搜索 API 的提要处理器 - 它可能是一个 RSS 提要,其中包含由Feedly刻录的 Google 网站中的所有文章,这些文章具有良好的多语言搜索 API 支持(搜索流)以及强大的身份验证来保护您的数据隐私。
作为一名架构师,我知道这不是问题的正确解决方案,但它曾经帮助我构建了一个完全可搜索的应用程序,使用俄语和乌克兰语语言环境聚合来自 100 多个不同数据源的数据。
祝您应用程序开发顺利,请告诉我此解决方案是否对您有帮助!:)