В чем разница между Lucene's MoreLikeThis (mlt) и FuzzyQuery (flt)?Разница между нечеткими подобными и более подобными этому?
Я оцениваю обоих типов запросов через Elasticsearch (ES), и я обнаружил, что они концептуально очень похожи:
mlt
: сравнить существующие документы полей с полями других документов, В.С.flt
: сравнить строка с полями других документов,
Однако flt
производительность, кажется, примерно на порядок величины медленнее, чем mlt
запроса.
Я использую новейшие ES, которые, в свою очередь, используют Lucene 4.5.
Из fuzzy like this документов:
Fuzzifies ВСЕХ условия, предоставляемые в виде строк, а затем выбирает лучший п дифференцирующего термины. По сути, это смешивает поведение FuzzyQuery и MoreLikeThis, но с особым учетом факторов нечеткого подсчета. Это, как правило, дает хорошие результаты для запросов, в которых пользователи могут предоставлять детали в нескольких полях и не знают синтаксиса булевых запросов, а также хотят получить степень нечеткого соответствия и быстрый запрос.
Для каждого источника термин нечеткие варианты хранятся в BooleanQuery без координирующего фактора (потому что мы не ищем совпадений по нескольким вариантам в любом документе). Кроме того, специализированный TermQuery используется для вариантов и не использует IDF этого варианта, поскольку это будет способствовать более редким терминам, таким как орфографические ошибки. Вместо этого все варианты используют одно и то же ранжирование IDF (одно для термина исходного запроса), и это учитывается в повышении варианта. Если исходный запрос не существует в индексе, используется средняя IDF вариантов.
Могу ли я узнать, был ли полезен ответ? – javanna
@javanna, извините за не отвечающий. Хорошо, ваш ответ хороший, и я узнал, что Fuzzy использует MLT внутри + некоторые дополнительные функции, что делает его значительно медленнее.То, что я хотел, было некоторым исходным кодом + примерами, которые иллюстрируют разницу, но это большая работа, и я просто могу сделать это сам когда-нибудь. До тех пор я с радостью принимаю ваш ответ :) – miku