Solr / SolrJ: Как вы выделяете нетекстовые поля? - PullRequest
1 голос
/ 14 июля 2011

Мне удалось включить подсветку для текстовых типов полей, но не для нетекстовых типов полей ...

Как настроить solr для выделения нетекстовых типов полей?Я не могу найти пример в Интернете для нетекстовых полей.Это вообще возможно?

В частности, я хочу выделить значение Date в документе, который соответствует запросу.

Я использую solrJ для выполнения запроса, может ли это быть ограничивающим фактором?

Ответы [ 2 ]

2 голосов
/ 14 июля 2011

Подсветка невозможна в нетекстовых полях. Посмотрите на это:

/**
   * Returns a collection of the names of all stored fields which can be
   * highlighted the index reader knows about.
   */
  public Collection<String> getStoredHighlightFieldNames() {
    if (storedHighlightFieldNames == null) {
      storedHighlightFieldNames = new LinkedList<String>();
      for (String fieldName : fieldNames) {
        try {
          SchemaField field = schema.getField(fieldName);

Особенно здесь:

          if (field.stored() &&
                  ((field.getType() instanceof org.apache.solr.schema.TextField) ||
                  (field.getType() instanceof org.apache.solr.schema.StrField))) {

пока здесь

            storedHighlightFieldNames.add(fieldName);
          }
        } catch (RuntimeException e) { // getField() throws a SolrException, but it arrives as a RuntimeException
            log.warn("Field \"" + fieldName + "\" found in index, but not defined in schema.");
        }
      }
    }
    return storedHighlightFieldNames;
  }
0 голосов
/ 16 февраля 2012

Вы не можете сделать это, как было объяснено.

Но адаптировать Solr для этого очень просто.Создайте другое поле для вашей даты, но в строковом формате.Теперь просто используйте copyField:

<field name="date1" type="date" indexed="true" stored="true" />
<field name="date1_str" type="string" indexed="true" stored="true" />

<copyField source="date1" dest="date1_str"/>

Затем просто добавьте поле date1_str к вашему запросу.

...