Solr Sunspot неиндексированное поле - PullRequest
0 голосов
/ 26 мая 2011

Solr (через Lucene) поддерживает различные способы указания способа индексации поля в документе: проиндексированный, токенизированный, сохраненный, ...

Я ищу способ иметь поля, которыехранятся в Solr, но не индексируются.Есть ли способ добиться этого в Sunspot?

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Конфигурация Sunspot DSL поддерживает опцию :stored => true для многих типов по умолчанию. Для примера сохраненной строки это было бы намного проще, чем мой первый пример:

searchable do
  string :name, :stored => true
end

Генерирует имя поля name_ss, соответствующее следующему dynamicField, уже присутствующему в стандартной схеме Sunspot:

<dynamicField name="*_ss" stored="true" type="string" multiValued="false" indexed="true"/>

Вы также можете создать свой собственный field или dynamicField в своем schema.xml для хранения, но не индексирования, а затем использовать опцию Sunspot 1.2 :as, чтобы указать соответствующее имя поля.

Например, более подробная версия выше. В вашей схеме:

<dynamicField name="*_stored_string" type="string" indexed="false" stored="true" />

А в вашей модели:

searchable do
  string :name, :as => 'name_stored_string'
end
0 голосов
/ 27 мая 2011

Вы можете попробовать:

http://localhost:8983/solr/admin/luke?numTerms=0

И прочитайте с помощью xpath или regex те поля со значением атрибута схемы:

<str name="I">Indexed</str>
<str name="T">Tokenized</str>
<str name="S">Stored</str>

Вы получите что-то вроде:

<lst name="field">
<str name="type">stringGeneralType</str>
<str name="schema">--SM---------</str>
</lst>
...