Почему Solr не использует анализаторы типа поля при отправке простых строк? - PullRequest
1 голос
/ 13 октября 2011

Я пытаюсь добавить HTML-контент в Solr с помощью PECL. К сожалению, я могу передать содержимое, но он не будет использовать типы анализатора в schema.xml

Например:

Добавление содержимого в solr:

$client = new SolrClient($options);            
$doc = new SolrInputDocument();
$doc->addField('title', 'SELLING CARS');

Schema.xml для поля "title"

<field name="title" type="lowercase" indexed="true" stored="true" multiValued="true"/>

Это должно гарантировать, что добавленная строка преобразуется в нижний регистр (я полагаю) Но при запросе индекса с помощью:

$query->setQuery('*:*');
$query_response = $client->query($query);

Содержимое все еще в верхнем регистре?

После вывода .... Есть идеи, что я делаю неправильно ???

...

[0] => Объект SolrObject ( [id] => 422 [title] => Массив ( [0] => ПРОДАВАЯ АВТОМОБИЛИ ) )

1 Ответ

1 голос
/ 13 октября 2011

На самом деле тип поля в нижнем регистре, определенный в примере schema.xml, только в нижнем регистре только при добавлении его в индекс или в целях запроса. Как вы можете видеть ниже, строчный тип является просто настройкой, примените LowerCaseFilterFactory при индексации или запросе данных.

<!-- lowercases the entire field value, keeping it as a single token.  -->
<fieldType name="lowercase" class="solr.TextField" positionIncrementGap="100">
  <analyzer>
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory" />
  </analyzer>
</fieldType>

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

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