2015-11-14 2 views
0

У меня есть поле, как показано ниже (результат запроса)Поиск подстроки в поле нескольких значений

"bestseller_archive_position": [ 
     "2015-11-13_1", 
     "2015-11-12_2" 
    ], 

Теперь мне нужно найти документы, которые содержат строку «2015-11-13» в этой области. Но когда я

q=2015-11-13 

или

q=2015-11-13* 

Я получаю 0 dcuments. Я тестировал разные типы полей. Как я могу выполнить такой поиск?

ответ

0

Очень трудно догадаться с такой информацией. Тем не менее, стрельба в темноте, я уверен, вы используете обработчик запросов с парсером запросов «lucene», что означает, что - имеет точное значение (запрещенное предложение, NOT). Поэтому вам следует избегать этих специальных символов с ведущими \

Кроме того, включите debug (добавьте debug = true), и вы увидите, как Solr «видит» выполняемый запрос.

+0

спасибо, что посмотрели. Если у меня возникнут вопросы о перемещении, я напишу больше информации – Fixus

+0

В противном случае, пожалуйста, примите ответ;) – Andrea

0

Сначала вы должны правильно настроить тип поля для поиска. Для ваших целей тип String будет хорошим, он будет хранить и индексировать данные как есть. Вы должны поместить следующий конфиг в вашем schema.xml

<field name="bestseller_archive_position" type="string" indexed="true" stored="false" multiValued="true"/> 
<fieldType name="string" class="solr.StrField" sortMissingLast="true"/> 

При поиске вы должны также определить поле, в котором вы делаете поиск. В другом случае поиск будет выполняться против поля по умолчанию. Например.

q=bestseller_archive_position:2015-11-13* 
+0

, к сожалению, это не работает. Забавно, что когда я запрашиваю такой «bestseller_archive_position: 2015-11», я получаю обе записи, которые я ожидаю, но когда я делаю 'bestseller_archive_position: 2015-11-1' или' bestseller_archive_position: 2015-11-13', чем i ничего не получают. Дикая карта не помогает – Fixus

+0

Кажется, что у вас есть проблема с токенизатором, она выплевывает начальную строку '2015-11-13_1' на токенах' 2015' '' '' '' '' 13_1'. Попробуйте изменить определение поля для '<имя FieldType = "ключевое слово" класс = "solr.TextField"> <токенизатор класс = "solr.KeywordTokenizerFactory"/> '. –