Я создаю запрос lucene в коде, чтобы вызвать сторонний API для извлечения записей, соответствующих поиску по почтовому индексу.
Я пытаюсь обнулить пробелы из поиска, либо из того, что находится в базовых данных, по которым выполняется поиск, или из того, что вводит пользователь, чтобы -
- , если пользователь выполнил поискдля «BU7 8DD» записи, содержащие «BU78DD» или «BU 78 DD», будут возвращены
- , если пользователь ищет «U78D», тогда записи, содержащие «BU7 8DD» или «BU 78 DD», будутбыть возвращенным
Я думал, что смогу сделать это, выполнив поиск по шаблону для каждого символа текста, введенного пользователем, так как мой запрос lucene будет выглядеть следующим образом, однако он не возвращает никаких результатов -
user searches: "BU7 8DD"
(PONO:*B* AND PONO:*U* AND PONO:*7* AND PONO:*8* AND PONO:*D* AND PONO:*D*)
results: 0
По некоторым исследованиям, я полагаю, проблема заключается в включении чисел, поскольку при выполнении запроса без чисел я получаю результаты -
(PONO:*B* AND PONO:*U* AND PONO:*D* AND PONO:*D*)
results: 2
BU7 8DD
BD18 0UP
Принимая во внимание, что еслиЯ выполняю поиск с использованием подстановочного номера по тому же набору данных, который не дает результатов -
(PONO:*7*)
results: 0
Кроме того, кажется, что он работает с числами, если я выполняю поиск по подстановочным символам по нескольким символам -
(PONO:*U7*)
results: 1
BU7 8DD
Я осмотрелся, и некоторые решения предполагают, что это может быть способ индексации данных и пользовательские парсеры, но у меня нет доступа к тому, как индексируются данные, и я могу искать только черезвопрос.
Кто-нибудь знает, есть ли что-то особенное, что я должен сделать для поиска с использованием подстановочных знаков для отдельных чисел?или есть лучший способ сделать поиск, игнорируя пробелы?