Хранение и поиск пар значений динамических ключей в документе Solr - PullRequest
1 голос
/ 15 ноября 2011

Мне нужно хранить и индексировать пары ключ-значение, связанные с конкретным документом Solr. Например, может быть переменное число тегов (меток), прикрепленных к документу solr, причем каждое имя тега имеет целое число вместе с ним в качестве значения для него.

   <doc>
     <id>1001</id>
     #dymanic tags attached
     php=>10
     web=>2
     programming=>12
     mysql=>10

    </doc>  

Так что, когда я ищу "php", этот документ должен появиться в результатах поиска, и я смогу прочитать его значение для этого конкретного документа (в случае примера его значение равно 10). Как мне создать схему для этого и как мне сохранить это. И как мне найти его с помощью API REST?

Ответы [ 2 ]

1 голос
/ 15 ноября 2011

В случае динамических полей вам необходимо добавить их в качестве ключа для получения счетчика, а также значений для их поиска.

Вместо этого вы можете попробовать -

Добавьте их в качестве многозначного поля для языков и количества.

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

<field name="language" type="text" indexed="true" stored="true" multiValued="true"/>

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

<field name="language_count" type="int" indexed="false" stored="true" multiValued="true"/>

В ответе у вас будет два массива для language и language_counts, и вы сможете отобразить счетчик для языка на стороне клиента по позиции.

0 голосов
/ 22 октября 2013

Обновление немного, потому что у solr появились новые функции:

Вы в XML, и solr хорошо разбирается в xml, поэтому используйте XML, а затем позвольте solr выполнять собственный анализ.

Другими словами, вы можете рассмотреть один из них:

<doc>
  <id php="10" web="2" programming="12" mysql="10">1001</id>
</doc>

или

<doc>
  <element id="1001" php="10" web="2" programming="12" mysql="10">
    #dymanic tags attached
    php=>10
    web=>2
    programming=>12
    mysql=>10
  </element>
</doc>

или

<doc>
  <element>
    <id>1001</id>
    <php>10</php>
    <web>2</web>
    <programming>12</programming>
    <mysql>10</mysql>
  </element>
</doc>

Конечно, если вы ДЕЙСТВИТЕЛЬНО не можете изменить свои данные, исходный ответ остается в силе.

...