Hello all,

I have a custom schema which has a few fields, and I would like to create a new 
field in the schema that only has one special line of another field indexed. 
Lets use this example:

field AllData (TextField) has for example this data:
Title: exampleTitle of the book
Author: Example Author
Date: 01.01.1980

Each line is separated by a line break.
I now need a new field named OnlyAuthor which only has the Author information 
in it, so I can search and facet for specific Author information. I added this 
to my schema:

<fieldType name="authorField" class="solr.TextField">
  <analyzer type="index">
    <charFilter class="solr.PatternReplaceCharFilterFactory" 
pattern="^.*\nAuthor: (.*?)\n.*$" replacement="$1" replace="all" />
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.TrimFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <charFilter class="solr.PatternReplaceCharFilterFactory" 
pattern="^.*\nAuthor: (.*?)\n.*$" replacement="$1" replace="all" />
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.TrimFilterFactory"/>
  </analyzer>
</fieldType>

<field name="OnlyAuthor" type="authorField" indexed="true" stored="true" />

<copyField source="AllData" dest="OnlyAuthor"/>


But this is not working, the new AuthorOnly field contains all data, because 
the regex didn't match. But I need "Example Author" in that field (I think) to 
be able to search and facet only author information.

I don't know where the problem is, perhaps someone of you can give me a hint, 
or a totally different method to achieve my goal to extract a single line from 
this multi-line-text.

Kind regards and thanks for any help
Michael


Reply via email to