Issue Details (XML | Word | Printable)

Key: LUCENE-494
Type: New Feature New Feature
Status: Closed Closed
Resolution: Fixed
Priority: Minor Minor
Assignee: Grant Ingersoll
Reporter: Mark Harwood
Votes: 1
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Lucene - Java

Analyzer for preventing overload of search service by queries with common terms in large indexes

Created: 08/Feb/06 08:12 AM   Updated: 11/Oct/08 12:49 PM
Return to search
Component/s: Analysis
Affects Version/s: 2.4
Fix Version/s: 2.4

Time Tracking:
Not Specified

File Attachments:
  Size
Java Source File Licensed for inclusion in ASF works QueryAutoStopWordAnalyzer.java 2006-02-08 08:13 AM Mark Harwood 8 kB
Java Source File Licensed for inclusion in ASF works QueryAutoStopWordAnalyzerTest.java 2006-02-08 08:13 AM Mark Harwood 6 kB

Resolution Date: 07/Feb/08 02:13 PM


 Description  « Hide
An analyzer used primarily at query time to wrap another analyzer and provide a layer of protection
which prevents very common words from being passed into queries. For very large indexes the cost
of reading TermDocs for a very common word can be high. This analyzer was created after experience with
a 38 million doc index which had a term in around 50% of docs and was causing TermQueries for
this term to take 2 seconds.

Use the various "addStopWords" methods in this class to automate the identification and addition of
stop words found in an already existing index.



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Grant Ingersoll added a comment - 10/Jan/08 08:33 PM
This seems generally useful and could go in contrib/analysis I suppose. Any thoughts on it, Mark, in hindsight? Do you still use it from time to time or do you now think there are better ways of doing it?

Grant Ingersoll added a comment - 12/Jan/08 11:11 PM
I think it makes sense to add this in after the 2.3 release.

Mark Harwood added a comment - 14/Jan/08 11:54 PM
I personally don't use this but others may. It was easier to solve my particular problem by adding stop words to my XSL query templates (I added support to the XMLQueryParser for the "FuzzyLikeThisQuery" tag to take stop words). This was more about ease of configuration in my particular app.

I know Nutch has something similar implemented elsewhere - maybe in the query parser.

I also had the notion that wrapping IndexReader to auto-cache TermDocs for super-popular terms using a BitSet would be a good way to avoid the IO overhead. This Bitset wouldn't help resolve positional queries e.g. phrase/span queries which need a TermPositions implementation but would work for straight TermQueries.


Grant Ingersoll added a comment - 07/Feb/08 02:13 PM
Committed, thanks Mark!