: i recently upgraded al systems for indexing and searching to lucene/solr 3.1,
: and unfortunatly it seems theres a lot more changes under the hood than
: there used to be.

it wounds like you are saying you had a system that wsa working fine for 
you, but when you tried to upgrade it stoped working.

: i have a java based indexer and a solr based searcher, on the java end for
        ...
: Analyzer an = new StandardAnalyzer(Version.LUCENE_31, nostopwords);

right off the bat, that line of code couldn't posisly have been in your 
existing 2.9 code (Version.LUCENE_31 didn't existing in 2.9) and 
instructs StandardAnalyzer to to some very basic things very 
differnetly then they were dong in 2.9...

http://lucene.apache.org/java/3_1_0/api/all/org/apache/lucene/analysis/standard/StandardAnalyzer.html

I would start by setting that to Version.LUCENE_29 to tell 
StandardAnalyzer that you want the same behavior as before.

Having said all of that -- the LUCENE_31 is considered better then the 
LUCENE_29 behavior, so you should consider change that to get the benefits 
-- but you need to understand your full analysis stack to do that.

: and for the solr end i have:

...you should also check if you added a <luceneMatchVersion/> of LUCENE_31 
to your solrconfig.xml -- if not do so so it's consistent with your 
external java code.

generally speaking just having your indexer using an off the shelf 
analyzer while your solr instead uses something like WordDelimiterFilter 
isn't going to work well, you need to think about index time analysis and 
query time anslysis in conjunction with eachother.

hang on, scratch that -- you may think you are using 
WordDelimiterFilterFactory, but you are not...

:  <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
:      
:         <filter class="solr.WordDelimiterFilterFactory"
: generateWordParts="1" generateNumberParts="1" catenateWords="1"
: catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/>
:       <analyzer class="org.apache.lucene.analysis.standard.StandardAnalyzer"
: ignoreCase="true" />
:     </fieldType>

...you can't just plop a <filter/> tag in a <fieldType/> like htat nad 
have it mean something.  <filter/> can be used when you are declaring an 
custom analyzer chain in the schema.xml, if you use <analyzer class="..." 
/> you get a concrete analyzer that has hardcoded behavior.

so if you aren't getting matches, it's a straight up discrepency between 
the LUCENE_31 and whatever seting you have in solrconfig.xml (which if you 
didn't add to your existing config, is going to be a legacy default ... 
2.4 or 2.9 ... i can't remember)


-Hoss

Reply via email to