В моем приложении JavaEE я использую API Сайтов на основе Atom для извлечения контента из непубличного сайта Google. По сути, мы используем сайт Google как легкий CMS, и изнутри приложения я использую API для извлечения содержимого сайта для подачи моей онлайн-справочной системы. У меня была эта настройка на некоторое время, и она работает без сбоев.
Проблема
В моем приложении мне нужно добавить полнотекстовый поиск в интерактивную справочную систему. Я знал, что этот запрос функции появится в какой-то момент, поэтому, когда вы решаете, что Сайты Google размещают мой контент, я проверил, поддерживает ли 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
Я получаю только страницы результатов, в которых термин поиска отображается как голая строка, т.е. ограничивается либо пробелом, либо пунктуацией. Поскольку японский язык написан на scriptio continua, этого недостаточно. Страницы, которые содержат, например:
ご 自身 の ユ ー ザ ー 基本 情報 の 確認
не будет отображаться в результатах. Таким образом, кажется, что индекс поиска, который используется за кулисами, создается на основе "западных" лексических правил, и японский контент неправильно обозначается. Однако, когда я ищу одно и то же ключевое слово из поля поиска сайта Google Site, я получаю правильные результаты. Я пришел к выводу, что существует правильно обозначенный индекс, но его невозможно использовать для поиска на основе API.
То, что я пробовал до сих пор
Чтобы исправить эту ситуацию, это те пути, которые я изучил до сих пор:
- Я пробовал искать языковые настройки в самих Сайтах Google. Там общий язык пользовательского интерфейса, который уже настроен на японский язык и не влияет на результаты запроса API. Не существует языковых настроек для каждой страницы или каждого шаблона, чтобы заставить руку индексатора/токенизатора.
- Я пробовал использовать строку поиска с двойными кавычками (
"ユーザー"
). - Я пробовал включить подстановочные знаки (
*ユーザー*
). - Я попытался использовать дополнительные языковые параметры для URL-адреса, которые распространены в других API Google:
lang
,hl
(язык интерфейса),rl
(язык результатов),.. - Я попытался создать Google пользовательскую поисковую систему, но, похоже, невозможно заставить его работать на непубличном сайте Google.
Итак...
У меня быстро заканчиваются идеи. В худшем случае я в конечном итоге должен получить, отметить и индексировать весь контент сам и сделать его доступным для поиска таким образом. Поскольку это потребует значительных усилий, я хотел бы знать, столкнулся ли кто-либо с той же проблемой и нашел приемлемое решение или решение.
Обновление 1
Мне еще предстоит найти изящное решение этой проблемы, поэтому я обнаружил дефект в трекере проблем с приложениями Google Apps: https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3780
Обновление 2
После того, как кто-то идет туда и обратно, инженеры Google признали, что проблема действительно существует, как описано, и "подала внутреннюю проблему". С тех пор билет с дефектом застрял в состоянии triaged. Если вы, как и я, заинтересованы в том, чтобы эта проблема была решена, пожалуйста, найдите минутку, чтобы проголосовать за нее в отслеживании проблем Google.