Hi,
Did you use the same snowball analyzer to create your index? Remember
that you usually need to use the same analyzer for indexing and
searching.
Patrick
On 9/21/07, Galactikuh <[EMAIL PROTECTED]> wrote:
>
> Hi,
> After doing some more analysis with Luke it does seem like that it is
> something about that Analyzer, not my code, since I get the same results in
> there.
>
> K
>
> Erick Erickson wrote:
> >
> > Have you gotten a copy of Luke and examined your index
> > to see if what's in there is actually what you think? I've found
> > it invaluable (see the Lucene pages).
> >
> > Also, query.toString() is your friend. It'll show you what the
> > actual query looks like after parsing.
> >
> > You could also, as a test, construct a BooleanQuery
> > with the term "nut" and see what comes back....
> >
> > Is it possible that UseStemmer is being set to false somehow
> > for the query parser (perhaps in code you didn't post?). That
> > would account for it...
> >
> > Best
> > Erick
> >
> > On 9/21/07, Galactikuh <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >> I am using SnowballAnalyzer with Hibernate search. I am using it to
> >> search
> >> phrases in a database. It only seems to return the stemmed version of any
> >> query. So for example, I have two phrases in the DB:
> >>
> >> "Cheney is a nut"
> >> and
> >> "I hate nuts"
> >>
> >> When I do a search for either "nut" or "nuts" it only returns "Cheney is
> >> a
> >> nut"
> >>
> >> This is what seems to be inside my index file:
> >>
> >> 'cheney' 'hate' 'i' 'nut' 's'
> >>
> >> Here is the code, although it's hibernate so not sure if it's relevant or
> >> will mean anything to anyone here.
> >>
> >> Thanks,
> >> Kshanti
> >>
> >> import javax.persistence.EntityManager;
> >>
> >> import org.apache.lucene.analysis.snowball.SnowballAnalyzer;
> >> import org.apache.lucene.analysis.standard.StandardAnalyzer;
> >> import org.apache.lucene.queryParser.QueryParser;
> >> import org.hibernate.*;
> >>
> >> public class LuceneSearch
> >> {
> >>
> >> public enum Similarity
> >> {
> >> KEYWORDS,
> >> HIGH,
> >> EXPAND,
> >> EXACT,
> >>
> >> }
> >>
> >> public static final String TEXT_FIELD = "TEXT";
> >>
> >> private static final String HIBERNATE_FILE =
> >> "META-INF/persistence.xml";
> >>
> >> private QueryParser _parser;
> >>
> >> private String[] _stopWords;
> >>
> >> private FullTextSession _textSession;
> >>
> >> private EntityManager _entityManager;
> >>
> >> private Similarity _defaultSimilarity=Similarity.KEYWORDS;
> >>
> >> private boolean _beenIndexed=false;
> >>
> >> public static boolean UseStemmer=true;
> >>
> >> public LuceneSearch(EntityManager entityMgr)
> >> {
> >> if (null == entityMgr)
> >> throw new IllegalArgumentException("entityMgr must not be
> >> null.");
> >>
> >> _entityManager = entityMgr;
> >> // Have to use sessions here
> >> try
> >> {
> >> Session session = (Session) _entityManager.getDelegate();
> >> _textSession = Search.createFullTextSession(session);
> >> initialize(null);
> >> }
> >> catch (ClassCastException ce)
> >> {
> >> // this error supposedly should not get thrown as getDelegate()
> >> // supposedly always returns a Session, but just in case.
> >> // (this was from examples on the web and the #hibernate channel
> >> so
> >> // needs to be verified
> >> ce.printStackTrace();
> >> // TODO: Wrap it up and do something else with it
> >> throw ce;
> >> }
> >> }
> >>
> >> private void initialize(String[] stopWords)
> >> {
> >> if (stopWords != null)
> >> {
> >> // first set up the parser with the new stop words
> >>
> >> if(UseStemmer)
> >> {
> >> _parser = new QueryParser(TEXT_FIELD, new
> >> SnowballAnalyzer("English",stopWords));
> >> }
> >> else
> >> {
> >> _parser = new QueryParser(TEXT_FIELD, new
> >> StandardAnalyzer(stopWords));
> >> }
> >> }
> >> else
> >> { // default stop words
> >> if(UseStemmer)
> >> {
> >> _parser = new QueryParser(TEXT_FIELD, new
> >> SnowballAnalyzer("English"));
> >> }
> >> else
> >> {
> >> _parser = new QueryParser(TEXT_FIELD, new
> >> StandardAnalyzer());
> >> }
> >> }
> >>
> >> _stopWords = stopWords;
> >> }
> >>
> >> /***
> >> * Run the indexer
> >> */
> >> public void index()
> >> {
> >> //now index
> >>
> >> Transaction tx = _textSession.beginTransaction();
> >> List<Prediction> predictions = _textSession.createQuery("from
> >> Prediction as prediction").list();
> >> for(Prediction pred: predictions)
> >> {
> >> _textSession.index(pred);
> >> }
> >> tx.commit(); //index are written at commit time
> >> _beenIndexed=true;
> >> }
> >>
> >> public List<Prediction> searchPredictions(String queryStr)
> >> {
> >> // look in text column of predictions
> >> try
> >> {
> >> if (queryStr != null && !queryStr.equals(""))
> >> {
> >> // need to add the field name to the querystring
> >> queryStr = TEXT_FIELD + ":" + queryStr;
> >> org.apache.lucene.search.Query luceneQuery =
> >> _parser.parse(queryStr);
> >> Query query = _textSession.createFullTextQuery(luceneQuery,
> >> Prediction.class);
> >> List<Prediction> ret = query.list();
> >> //default fits the KEYWORDS similarity
> >> if (ret != null)
> >> {
> >> switch(_defaultSimilarity)
> >> {
> >>
> >> case KEYWORDS:
> >> case HIGH:
> >> case EXPAND:
> >> case EXACT:
> >>
> >> return ret;
> >>
> >> }
> >>
> >> }
> >> }
> >> }
> >> catch (Exception pe)
> >> {// KKG TODO: Turn this into a better exception
> >> pe.printStackTrace();
> >> }
> >> return new ArrayList<Prediction>();
> >> }
> >> }
> >>
> >>
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/Help-with-Snowball-Analyzer-tf4497960.html#a12827864
> >> Sent from the Lucene - Java Users mailing list archive at Nabble.com.
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [EMAIL PROTECTED]
> >> For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >
> >
>
> --
> View this message in context:
> http://www.nabble.com/Help-with-Snowball-Analyzer-tf4497960.html#a12831941
> Sent from the Lucene - Java Users mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]