Solr 4 - Индексация размещенного текстового файла

Я пытаюсь создать поле с именем «sku», которое индексируется следующим анализатором:

<fieldType name="sku" class="solr.TextField">
   <analyzer>
  <tokenizer class="solr.PatternTokenizerFactory" pattern="(SKU|Part(\sNumber)?):?\s(\[0-9-\]+)" group="3"/>
</analyzer>
 </fieldType>

Это из документации здесь http://lucidworks.lucidimagination.com/display/solr/Tokenizers#Tokenizers-RegularExpressionPatternTokenizer

У меня уже есть программа Java, которая успешно публикуется на сервере solr, однако она не захватывает sku из каких-либо файлов и не индексирует их. Вот мой код Java:

ContentStreamUpdateRequest up = new ContentStreamUpdateRequest(
                "/update/extract");
        up.addFile(arg0, arg0.getName());

        up.setParam("literal.id", arg0.getName());
        up.setParam("uprefix", "attr_");
        up.setParam("fmap.content", "attr_content");

        up.setAction(AbstractUpdateRequest.ACTION.COMMIT, true, true);

        server.request(up);

Любая помощь приветствуется.

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


person Chris    schedule 21.01.2013    source источник
comment
Похожи ли ваши номера SKU на то, что шаблон предназначен для захвата? То есть: начните с SKU или Part, необязательного слова Number, необязательного двоеточия, обязательного (!) пробела, одной или нескольких цифр и дефисов (и ничего больше) для захвата. Обратите внимание, я считаю, что это также будет чувствительно к регистру.   -  person femtoRgon    schedule 21.01.2013


Ответы (1)


Трудно сказать, что происходит, потому что посередине есть несколько шагов.

Например, каково ваше определение schema.xml. Он определенно использует sku в качестве типа (а не строку). Затем, каково имя поля (attr_sku?) и действительно ли сопоставление обработчика извлечения сопоставляется с ним правильно? Обработчик извлечения обычно отправляет метаданные в виде отдельных полей, а затем все содержимое файла в виде одного большого длинного поля. Артикул где-то в метаданных?

Я бы сделал copyField во что-то необрабатываемое и посмотрел, действительно ли контент попадает в поле Solr. Затем я бы начал устранять неполадки с самим регулярным выражением.

person Alexandre Rafalovitch    schedule 21.01.2013
comment
Спасибо за ответ Александр. Я использовал copyField, как вы предложили, чтобы увидеть, попадает ли содержимое в поле solr. Что он и делает. Я не вижу ничего плохого в регулярном выражении или примерах данных, поскольку я скопировал их непосредственно со страницы документации Lucene (ссылка в исходном сообщении), и мне это кажется правильным. Тем не менее, мне удалось добиться того, чего я хотел (другим способом, с другими токенизаторами). Спасибо, что поставили меня на правильный путь отладки этого. - person Chris; 22.01.2013