искать подмассивы с индексом и значением для возврата документа в solr - PullRequest
0 голосов
/ 01 декабря 2018

У меня есть следующий набор данных в следующем формате, и я хочу, чтобы он был доступен для поиска через solr.В следующем примере как будет выглядеть каждый мой документ.

{
  'key': <unique key>,
  'val_arr': [
               ['laptop', 'macbook pro', '16gb', 'i9', 'spacegrey'],
               ['cellphone', 'iPhone', '4gb', 't2', 'rose gold'],
               ['laptop', 'macbook air', '8gb', 'i5', 'black'],
               ['router', 'huawei', '10x10', 'white'],
               ['laptop', 'macbook', '8gb', 'i5', 'silve']
             ]
}

Я буду получать поисковые запросы со значением элемента и его индексом (2 элемента на запрос).например.index1=0, val1=laptop, index2=2, val2=16gb, который соответствует одному из массивов в указанном выше документе, следовательно, он извлекает весь документ в результате поиска.Я попытался использовать copyField и пользовательский анализатор запросов, но он будет выполнять поиск по кросс-подмассивам, то есть может получить ноутбук с телефоном 4 ГБ, тогда как запрос может быть для ноутбука 4 ГБ.Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 декабря 2018

Если вы выполняете только точные совпадения, индексируйте значения с помощью индекса как части значения и используйте строковый / необработанный тип поля:

val_arr: ["0_laptop", "1_macbook pro", "2_16gb", ...]

Это можно сделать с помощьюточный индекс, комбинация значений - val_arr:0_laptop AND val_arr:2_16gb.

Если вам необходимо регулярно выполнять сопоставление (и обработку / токенизацию) поля, вместо него можно использовать динамические имена полей:

"val_arr_0": "laptop",
"val_arr_1": "macbook pro",
"val_arr_2": "16gb",
..

А затем запросить поле - val_arr_0:laptop AND val_arr_2:16gb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...