lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jan Høydahl <jan....@cominvent.com>
Subject Re: more granular updateRequestProcessorChain
Date Wed, 05 Oct 2011 20:05:08 GMT
Hi,

If you want to add payloads in the UpdateChain, have a look at DelimitedPayloadTokenFilter.
Put that in your FieldType, and create a Processor which annotates the text with payloads,
e.g.:

<field name="text">foo|2.0 bar|3.0</field>

Using DelimitedPayloadTokenFilter with delimiter="|" you can now get the payload 2.0 indexed
for "foo" and 3.0 for "bar".

Perhaps you should have a look at DisMax request handler as well, which for many use cases
is a better option than using catch-all field.

--
Jan Høydahl, search solution architect
Cominvent AS - www.cominvent.com
Solr Training - www.solrtraining.com

On 5. okt. 2011, at 21:49, Mikhail Khludnev wrote:

> Jan,
> 
> Shame on me, I was off for some time. I have a "catch-all" field - initially I copied
n fields into the single one. But then I had to add a special payload per copied fields, and
I've done it by Analyzer.  
> 
> for(src : srcFiledNames ){
>    payload = new MyPayloadTokenStream(input.get(src));
>    doc.add(new Field("destination",  payload));
> }
> 
> How it can be done?
> 
> --
> Mikhail Khludnev
> 
> On Wed, Aug 31, 2011 at 3:52 PM, Jan Høydahl <jan.asf@cominvent.com> wrote:
> Hi,
> 
> Can you explain the wanted functional result of your copy operation? I've done copying
fields in processors without trouble.
> What do you want to do with the Lucene Document?
> 
> --
> Jan Høydahl, search solution architect
> Cominvent AS - www.cominvent.com
> Solr Training - www.solrtraining.com
> 
> On 17. aug. 2011, at 09.51, Mikhail Khludnev wrote:
> 
>> Hello,
>> 
>> I need to implement some tricky copyField like in http://wiki.apache.org/solr/UpdateRequestProcessor.

>> But I need to take the SolrInputDocument field and put it into Lucene document myself
by my own UpdateRequestProcessor. Unfortunately there is no room to do that because the creating
Lucene document and its' indexing it is the single method: 
>> 
>> org.apache.solr.update.processor.RunUpdateProcessor.processAdd(AddUpdateCommand)
>>  {
>>     cmd.doc = DocumentBuilder.toDocument(cmd.getSolrInputDocument(), req.getSchema());
>>     updateHandler.addDoc(cmd);
>>     super.processAdd(cmd);
>>   }
>> 
>> I was surprised because the Chain-of-responsibility and Command pattern are made
for such usages.
>> 
>> I propose to separate the current RunUpdateProcessor onto BuildLuceneDocumentProcessor
and UpdateHandlerProcessor that allow users to inject their own routines in the main flow.

>> Right now I had to copy-paste RunUpdateProcessor to get my purpose.
>> 
>> WDYT?
>> 
>> -- 
>> Sincerely yours
>> Mikhail (Mike) Khludnev
>> Developer
>> Grid Dynamics
>> Skype: mkhludnev
>> 
> 
> 
> 
> 
> -- 
> Sincerely yours
> Mikhail (Mike) Khludnev
> Developer
> Grid Dynamics
> tel. 1-415-738-8644
> Skype: mkhludnev
> 
> 


Mime
View raw message