Позволяет ли App Engine Search Api частичное и ошибочное совпадение
Мой форум использует API поиска Google App Engine. Поэтому, естественно, я хотел бы найти частичные слова с ошибками. Но API не делает этого. Кто-нибудь знает обходные пути или лучшие альтернативы этому API?
Для частичного совпадения я могу представить, как каждое слово в комментарии на форуме разбивается на множество подстрок. Но это кажется довольно дорогим. Подумайте: если комментарий содержит 60 слов (скажем, всего 500 символов), то сохранение этого отдельного сообщения на форуме приведет к огромному текстовому полю в документе.
Document.Builder builder = Document.newBuilder();
builder.addField(Field.newBuilder().setName(“comment”).setText(comment))
Это довольно нелепо, особенно сопоставление регулярных выражений будет гораздо более экономичным. Возникает вопрос: почему в запросе не используется сопоставление регулярному выражению, чтобы можно было найти неполные слова? Что касается орфографических ошибок, для этого существует ряд алгоритмов, почему движок приложений Seach api не предлагает его?
Теперь, конечно, я публикую это здесь, надеясь, что я неправ, и кто-то покажет мне, что Search Api действительно предоставляет все эти функции. Я просматривал много уроков онлайн и не так много до сих пор. Итак, вопрос снова: разрешает ли API App Engine Search partial text matching
а также misspelled text matching
? Если нет, как я могу взломать это?
2 ответа
API поиска не поддерживает частичное сопоставление текста прямо сейчас. Тем не менее, существует множество подобных проектов. Предоставление средств для установки Lucene/Compass поверх GAE. Которые способны делать именно то, что вы ищете.
Вы можете использовать функцию stemming для запроса вариантов слов:
https://cloud.google.com/appengine/docs/java/search/query_strings
Для поиска распространенных вариантов слова, таких как формы множественного числа и окончания глаголов, используйте оператор ~ stem (символ тильды). Это префиксный оператор, который должен предшествовать значению без пробела. Значение ~ cat будет соответствовать "кошке" или "кошкам", а также ~ собака соответствует "собаке" или "собакам". Алгоритм stemming не является надежным. Значение ~ забота будет соответствовать "заботе" и "заботе", но не "заботам" или "заботе". Stemming используется только при поиске текстовых и HTML-полей.