2013-09-11 2 views
0

То есть, вероятно, плохо название ...solr fq; целое сравнение подстроки

Но, допустим, у меня есть куча строк в многозначном поле

<field name="stringweights" type="text_nostem" indexed="true" stored="true" multiValued="true"/> 

Выборочные данные могут быть:

history:10 
geography:33 
math:29 

Теперь я хочу написать FQ, где я выбираю все записи в Solr, где:

  1. stringweights начинается с «географией»:
  2. и где целое значение после «географии:» является> = 10.

Можно ли написать SOLR запрос, как это?

(Невозможно создать целое поле в схеме solr с именем «география», другое называется «математика» и т. Д., Потому что эти строковые части поля неизвестны во время разработки и могут иметь много сотен/тысяч разных значений .)

ответ

1

Возможно, вы захотите изучить dynamic fields. Объявите динамическое поле в вашей схеме, как:

<dynamicField name="stringweight_*" type="integer" indexed="true" stored="true"/> 

Тогда вы можете иметь ваши документы, как:

stringweight_history: 10 
stringweight_geography: 33 
stringweight_math: 29 

Ваш запрос фильтр, то просто:

fq=stringweight_geography:[10 TO *] 

Вам может понадобиться для создания пользовательский индекс для этого. Или используйте трансформатор сценария с обработчиком импорта данных, как указано здесь: Dynamic column names using DIH (DataImportHandler).

Смежные вопросы