> an example

PerFieldAnalyzerWrapper analyzers =
    new PerFieldAnalyzerWrapper(new KeywordAnalyzer());
// myfield defaults to KeywordAnalyzer
analyzers.addAnalyzer("content", new SnowballAnalyzer(luceneVersion, 
"English"));
// analyzers affects the indexed field value
IndexWriter writer = new IndexWriter(dir, analyzers, true, mfl);
// analyzers affects the parsed query string
QueryParser parser = new QueryParser(luceneVersion, "myfield", analyzers);
parser.setAllowLeadingWildcard(true);
Query query = parser.parse("*:* AND -myfield:\"*foo*\"");
// What about an Analyzer to match field value to the query at search time?
ScoreDoc[] docs = searcher.search(query, null, 1000).scoreDocs;

> An inverse query would require rewriting, too, I think.

Why would implementing a new Query class requires document changes in the index.

> Can you turn those prefixes into field names

No, the prefixes are not discrete. Multiple field values could start with the 
same prefix.

Writing something like InverseWildcardQuery seems like the most appropriate 
solution. My thought to have another Analyzer used on the field value at search 
time may be crazy, I don't know.




----- Original Message ----
From: Steven A Rowe <sar...@syr.edu>
To: "java-user@lucene.apache.org" <java-user@lucene.apache.org>
Sent: Fri, July 30, 2010 12:04:58 PM
Subject: RE: InverseWildcardQuery

Hi Justin,

> Unfortunately the suffix requires a wildcard as well in our case. There
> are a limited number of prefixes though (10ish), so perhaps we could
> combine them all into one query. We'd still need some sort of
> InverseWildcardQuery implementation.
> 
> > use another analyzer so you don't need wildcards
> 
> I know analyzers can be used with IndexWriter and with QueryParser. Is
> there somewhere an analyzer could be used to alter the field to match the
> query at search time instead of altering the query to match the field?

Can you give an example of what you mean?

> Our current path to solving our problem requires additional fields which
> need rewritten causing a much larger performance degredation. One of the
> two paths above would be much more desirable.

An inverse query would require rewriting, too, I think.

You say you have 10-ish prefixes.  Can you turn those prefixes into field 
names, 
and index a token like EMPTY when there are no values for a particular prefix?  
Then your query would be (F1:EMPTY OR F2:EMPTY ... OR F10:EMPTY).

Steve



      

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to