On Oct 24, 2011, at 1:41pm, jame vaalet wrote: > hi, > in my use case i have list of key value pairs in each document object, if i > index them as separate index fields then in the result doc object i will get > two arrays corresponding to my keys and values. The problem i face here is > that there wont be any mapping between those keys and values. > > do we have any easy to index these data in solr ? thanks in advance ...
As Karsten said, providing more detail re what you're actually trying to do usually makes for better and more helpful/accurate answers. But I'm guessing you only want to search on the key, not the value, right? If so, then: 1. Create a multi-value field with a custom type, indexed, stored. 2. During indexing, add entries as <key><tab><value> 3. In the custom type, set the analyzer to strip off the <tab><value> so you only index the key. E.g. <fieldType name="key_value" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true" omitTermFreqAndPositions="true" omitNorms="true"> <analyzer type="index"> <!-- Get rid of <tab><value> text at the end of each string --> <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\t\d+$" replacement="" /> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> </analyzer> </fieldType> -- Ken -------------------------- Ken Krugler +1 530-210-6378 http://bixolabs.com custom big data solutions & training Hadoop, Cascading, Mahout & Solr