Я новичок в поиске эластичности, и вот мой сценарий, который я пытаюсь решить. У меня есть поле ввода поиска, которое поддерживает логику автозапусков. Результаты получены из индекса упругости, который использует фильтр ngram. То, что я хочу улучшить, - это представить возможность подсчета очков, чтобы упорядочить результаты от самого важного к менее важному (в зависимости от оценки). Счет должен быть основан на следующих случаях:оценка эластичности на основе регулярного выражения с использованием mvel
- Если есть совпадение, которое начинается с заданной строки, установите счет 100
- Если есть совпадение, которое содержит данную строку и не начинается с он установил счет до 10
Для этого был реализован скрипт эластики с операторами mvel для поддержки соответствия регулярному выражению. Другими словами, он проверяет, соответствует ли значение слева правильному правилу справа (только тогда переменная соответственно увеличивается). Но, к сожалению, это не так, когда строка поиска отличается от языка, несмотря на то, что значение слева также относится к указанному языку. Другая проблема, с которой приходится иметь дело, - это второй случай, о котором я упоминал выше (не могу заставить его работать).
Сценарий, когда значение («один пример» (принадлежит полю поля)), начинающееся с данного слова («один»), работает нормально.
$testParam = mb_strtolower('one', 'utf-8');
$regexStart = '^' . $testParam . '.*$';
$ElasticaScript = new Elastica_Script(" total = 1; if(doc['name'].value ~= '{$regexStart}'){ total += 100; } return total; ");
Сценарий, когда значение («один пример» (принадлежит поле имени)) содержат данное слово («пример») не работает, и в результате общая оценка остается 1 и не увеличивается в 11 как и должно быть.
$testParam = mb_strtolower('example', 'utf-8');
$regexStart = '^.*' . $testParam . '.*$';
$ElasticaScript = new Elastica_Script(" total = 1; if(doc['name'].value ~= '{$regexStart}'){ total += 10; } return total; ");
И наконец, с той же логикой, когда я пытаюсь соответствовать греческое слово со значением, (содержащего греческие буквы) от поля имени, приращение общего балла игнорируется, а также.
Вся работа была выполнена с использованием эластичности, не говоря уже о php. Не могли бы вы помочь решить мою проблему? Если есть другой подход/решение, не стесняйтесь поделиться им со мной.
Спасибо заранее
Опубликуйте свой сценарий, что произойдет, когда вы попробуете его, и чего вы ожидаете. – kielni
Привет, kielni, я разместил его. – elviento