@Sheng
I am using StandardAnalyzer

@Ahmet
I know using the query object will simply work. But I hae a requirement
where the user insert the whole String and i want to return the doc which
exactly match the given text

On Fri, Jun 19, 2015 at 9:23 PM, Sheng <sheng...@gmail.com> wrote:

> 1. What is the analyzer are you using for indexing ?
> 2. you cannot fuzzy match field name - that for sure will throw exception
> 3. I would start from a simple, deterministic query object to rule out all
> unlikely possibilities first before resorting to parser to generate that
> for you.
>
>
> On Fri, Jun 19, 2015 at 10:45 AM, Ahmet Arslan <iori...@yahoo.com.invalid>
> wrote:
>
> > Hi,
> >
> > Why don't you create your query with API?
> >
> > Term term = new Term("B", "1 2");
> > Query query = new TermQuery(term);
> >
> > Ahmet
> >
> >
> >
> > On Friday, June 19, 2015 9:31 AM, Gimantha Bandara <giman...@wso2.com>
> > wrote:
> > Correction..
> >
> > second time I used the following code to test. Then I got the above
> > IllegalStateException issue.
> >
> > w = new QueryParser(null, new WhitespaceAnalyzer()).parse("*B:\"1 2\"*");
> >
> > not the below one.
> >
> > w = new QueryParser(null, new WhitespaceAnalyzer()).parse("*\**"B:1
> 2\"*");
> >
> > Can someone point out the correct way to query for StringFields?
> >
> > Thanks,
> >
> > On Thu, Jun 18, 2015 at 2:12 PM, Gimantha Bandara <giman...@wso2.com>
> > wrote:
> >
> > > Hi all,
> > >
> > > I have created lucene documents like below.
> > >
> > > Document doc = new Document();
> > > doc.add(new TextField("A", "1", Field.Store.YES));
> > > doc.add(new StringField("B", "1 2 3", Field.Store.NO));
> > > doc.add(new TextField("Publish Date", "2010", Field.Store.NO));
> > > indexWriter.addDocument(doc);
> > >
> > > doc = new Document();
> > > doc.add(new TextField("A", "2", Field.Store.YES));
> > > doc.add(new StringField("B", "1 2", Field.Store.NO));
> > > doc.add(new TextField("Publish Date", "2010", Field.Store.NO));
> > > indexWriter.addDocument(doc);
> > >
> > > doc = new Document();
> > > doc.add(new TextField("A", "3", Field.Store.YES));
> > > doc.add(new StringField("B", "1", Field.Store.NO));
> > > doc.add(new TextField("Publish Date", "2012", Field.Store.NO));
> > > indexWriter.addDocument(doc);
> > >
> > > Now I am using the following code to test the StringField behavior.
> > >
> > >         Query w = null;
> > >         try {
> > >             w = new QueryParser(null, new
> > WhitespaceAnalyzer()).parse("B:1
> > > 2");
> > >         } catch (ParseException e) {
> > >             e.printStackTrace();
> > >         }
> > >         TopScoreDocCollector collector =
> TopScoreDocCollector.create(100,
> > > true);
> > >         searcher.search(w, collector);
> > >         ScoreDoc[] hits = collector.topDocs(0).scoreDocs;
> > >         Document indexDoc;
> > >         for (ScoreDoc doc : hits) {
> > >             indexDoc = searcher.doc(doc.doc);
> > >             System.out.println(indexDoc.get("A"));
> > >         }
> > >
> > > Above code should print only the second document's 'A' value as it is
> the
> > > only one where 'B' has value '1 2'. But it returns the 3rd document.
> So I
> > > tried using double quotation marks for 'B' value as below.
> > >
> > > w = new QueryParser(null, new WhitespaceAnalyzer()).parse("\"B:1 2\"");
> > >
> > > It gives the following error.
> > >
> > > Exception in thread "main" java.lang.IllegalStateException: field "B"
> was
> > > indexed without position data; cannot run PhraseQuery (term=1)
> > >     at
> > >
> >
> org.apache.lucene.search.PhraseQuery$PhraseWeight.scorer(PhraseQuery.java:277)
> > >     at org.apache.lucene.search.Weight.bulkScorer(Weight.java:131)
> > >     at
> > > org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:618)
> > >     at
> > > org.apache.lucene.search.IndexSearcher.search(IndexSearcher.java:309)
> >  Is
> > > my searching query wrong? (Note: I am using whitespace analyzer
> > everywhere)
> > >
> > > --
> > > Gimantha Bandara
> > > Software Engineer
> > > WSO2. Inc : http://wso2.com
> > > Mobile : +94714961919
> >
> > >
> >
> >
> >
> > --
> > Gimantha Bandara
> > Software Engineer
> > WSO2. Inc : http://wso2.com
> > Mobile : +94714961919
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
> > For additional commands, e-mail: java-user-h...@lucene.apache.org
> >
> >
>



-- 
Gimantha Bandara
Software Engineer
WSO2. Inc : http://wso2.com
Mobile : +94714961919

Reply via email to