Подстановочный запрос Lucene с одиночными цифрами, не возвращающий попаданий - PullRequest
1 голос
/ 03 июля 2019

Я создаю запрос 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 

Я осмотрелся, и некоторые решения предполагают, что это может быть способ индексации данных и пользовательские парсеры, но у меня нет доступа к тому, как индексируются данные, и я могу искать только черезвопрос.

Кто-нибудь знает, есть ли что-то особенное, что я должен сделать для поиска с использованием подстановочных знаков для отдельных чисел?или есть лучший способ сделать поиск, игнорируя пробелы?

...