Как использовать лайк-запрос в objectify - PullRequest
0 голосов
/ 21 мая 2019

Я хочу найти подстроку в тексте URL в БД.Как %substring%.Как решить эту проблему, используя objectify?

if(url != null) {
    xoloWebHistoryQ=xoloWebHistoryQ.filter("url >=", url);
    xoloWebHistoryQ=xoloWebHistoryQ.filter("url <", url+"\ufffd");
}

Я пробовал это с кодом выше, но он не возвращает URL , что подстроки находятся всредний.

1 Ответ

0 голосов
/ 22 мая 2019

Вы запрашиваете полнотекстовый поиск.Это не то, с чем хорошо справляется хранилище данных - на самом деле, большинство баз данных довольно слабы, поэтому у нас есть специализированные базы данных, такие как Elasticsearch.

Если вы хотите подделать его с хранилищем данных, вы можете.Создайте синтетическое индексированное свойство List, которое вы заполняете в методе @OnSave.Заполните его всеми вещами, которые вы хотите сопоставить: 'substring', 'ubstring', 'bstring', 'ubs' и т. Д. Затем сделайте совпадения равенства для этого поля.Будьте осторожны, вы можете получить огромные индексы таким образом, но если ваши данные достаточно компактны, они будут работать.

Если вы хотите «настоящий» полнотекстовый поиск, скопируйте данные из хранилища данных в другоелучше в этом виде индексации.Есть услуги Elasticsearch.GAE / Standard имеет старую услугу FTS, которая работает довольно хорошо (хотя это не может быть хорошим долгосрочным решением).Вы даже можете использовать Postgres, если ваши потребности просты.

...