You misread what I wrote. When it's ABC in the index and I search for ABC I get no match. But AFTER I change ABC to ABCD and search for ABCD, I get a match.
> -----Original Message----- > From: Aditya [mailto:findbestopensou...@gmail.com] > Sent: Thursday, September 27, 2012 5:19 AM > To: java-user@lucene.apache.org > Subject: Re: short search terms > > Hi > > You are searching with 3 characters but the items actually indexed has > 4 > characters. Use Luke and analyze the index. > > If searching for ABC has to be matched with ABCD then you need to do a > wildcard search. Add * at the end of the search query (ABC*). > > Regards > Aditya > www.findbestopensource.com > > > On Thu, Sep 27, 2012 at 3:05 AM, Edward W. Rouse > <ero...@comsquared.com>wrote: > > > I have an index and one of the items to search for is an identifier > that > > will always be 3 characters, like ABC or XYZ. If I do a search for > ABC I > > get > > no matches. If I add 1 more character so that ABC becomes ABCD and > search > > for ABCD, it matches. I have been looking through the code (I > inherited and > > the original coder is no longer with the company) to see if there is > any > > place where he might have put a limitation in, but testing indicates > that > > it > > is creating a query. Some code below: > > > > QueryParser parser = new QueryParser(Version.LUCENE_34, > > TaskRecord.BaseFields.PUBLIC_DEFAULT_FIELD.getName(), getAnalyzer()); > > parser.setDefaultOperator(Operator.AND); > > Query query = parser.parse(qstring); > > > > qstring is the search text and getAnalyser returns a > StandardAnalyzer. > > > > The Query is then used to search using the following code: > > > > public List<Long> search(Query query) throws IOException > > { > > IndexReader reader = null; > > try > > { > > reader = IndexReader.open(getRoot(), true); > > IndexSearcher searcher = new IndexSearcher(reader); > > > > // Do the search with an artificial limit of 32 results > > TopDocs hits = searcher.search(query, 32); > > > > // If the search actually has more hits, then run it again with > > correct max > > if(hits.totalHits > 32) > > { > > if(log.isDebugEnabled()) > > { > > log.debug("Rerunning query with max size of " + > hits.totalHits + > > " > > " + query); > > } > > > > hits = searcher.search(query, hits.totalHits); > > } > > > > // Create task ID list and return > > if(hits.totalHits < 1) > > { > > if(log.isDebugEnabled()) > > log.debug("Query has no hits " + query); > > > > return Collections.emptyList(); > > } > > else > > { > > if(log.isDebugEnabled()) > > log.debug("Query has " + hits.totalHits + " hits " + > query); > > > > List<Long> taskIds = new ArrayList<Long>(hits.totalHits); > > for(ScoreDoc doc: hits.scoreDocs) > > { > > > taskIds.add(Long.valueOf(searcher.doc(doc.doc).get("task"))); > > } > > return taskIds; > > } > > } > > finally > > { > > try > > { > > if(reader != null) > > reader.close(); > > } > > catch(IOException e) > > { > > } > > } > > } > > > > > > > -----Original Message----- > > > From: Chris Hostetter [mailto:hossman_luc...@fucit.org] > > > Sent: Wednesday, September 26, 2012 5:18 PM > > > To: java-user@lucene.apache.org > > > Subject: Re: short search terms > > > > > > > > > : I have a key field that will only ever have a length of 3 > characters. > > > I am > > > : using a StandardAnalyzer and a QueryParser to create the Query > > > : (parser.parse(string)), and an IndexReader and IndexSearcher to > > > execute the > > > : query (searcher(query)). I can't seem to find a setter to allow > for a > > > 3 > > > : character search string. There is one setMinWordLen, but it isn't > > > applicable > > > > > > there's a lot of missing information here ... what do you mean > "allow > > > for > > > a 3 character search string" .. the query parser doesn't have > anything > > > in > > > it that would prevent a 3 (or 3, or 1) character search string, so > i > > > suspect that's not really the question you mean to ask. > > > > > > what is problem you are actaully seeing? do you have a query that > > > isn't > > > matching the docs you think it should? what query? what docs? what > does > > > the code look like? > > > > > > can you explain more what this 3 character ifeld represents, and > how > > > you > > > want to use it? > > > > > > https://people.apache.org/~hossman/#xyproblem > > > Your question appears to be an "XY Problem" ... that is: you are > > > dealing > > > with "X", you are assuming "Y" will help you, and you are asking > about > > > "Y" > > > without giving more details about the "X" so that we can understand > the > > > full issue. Perhaps the best solution doesn't involve "Y" at all? > > > See Also: http://www.perlmonks.org/index.pl?node_id=542341 > > > > > > -Hoss > > > > > > ------------------------------------------------------------------- > -- > > > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > > > For additional commands, e-mail: java-user-h...@lucene.apache.org > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org > > For additional commands, e-mail: java-user-h...@lucene.apache.org > > > > --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org For additional commands, e-mail: java-user-h...@lucene.apache.org