com.atlassian.jira.issue.search.providers
Class LuceneSearchProvider

java.lang.Object
  extended by com.atlassian.jira.issue.search.providers.LuceneSearchProvider
All Implemented Interfaces:
SearchProvider

public class LuceneSearchProvider
extends Object
implements SearchProvider


Constructor Summary
LuceneSearchProvider(IssueFactory issueFactory, SearchProviderFactory searchProviderFactory, PermissionsFilterGenerator permissionsFilterGenerator, SearchHandlerManager searchHandlerManager, SearchSortUtil searchSortUtil, LuceneQueryBuilder luceneQueryBuilder)
           
 
Method Summary
 void search(Query query, com.atlassian.crowd.embedded.api.User user, org.apache.lucene.search.Collector collector)
          Run a search based on the provided search criteria and, for each match, call Collector.collect().
 void search(Query query, com.atlassian.crowd.embedded.api.User searcher, org.apache.lucene.search.Collector collector, org.apache.lucene.search.Query andQuery)
          Run a search based on the provided search criteria and, for each match, call Collector.collect().
 SearchResults search(Query query, com.atlassian.crowd.embedded.api.User searcher, PagerFilter pager)
          Search the index, and only return issues that are in the pager's range.
 SearchResults search(Query query, com.atlassian.crowd.embedded.api.User searcher, PagerFilter pager, org.apache.lucene.search.Query andQuery)
          Search the index, and only return issues that are in the pager's range while AND'ing the raw lucene query to the generated query from the provided searchQuery.
 void searchAndSort(Query query, com.atlassian.crowd.embedded.api.User user, org.apache.lucene.search.Collector collector, PagerFilter pagerFilter)
          Run a search based on the provided search criteria and, for each match call Collector.collect().
 void searchAndSortOverrideSecurity(Query query, com.atlassian.crowd.embedded.api.User user, org.apache.lucene.search.Collector collector, PagerFilter pagerFilter)
          Run a search based on the provided search criteria and, for each match call Collector.collect().
 long searchCount(Query query, com.atlassian.crowd.embedded.api.User user)
          Return the number of issues matching the provided search criteria.
 long searchCountOverrideSecurity(Query query, com.atlassian.crowd.embedded.api.User user)
          Return the number of issues matching the provided search criteria, overridding any security constraints.
 void searchOverrideSecurity(Query query, com.atlassian.crowd.embedded.api.User user, org.apache.lucene.search.Collector collector)
          Run a search based on the provided search criteria and, for each match, call Collector.collect() not taking into account any security constraints.
 SearchResults searchOverrideSecurity(Query query, com.atlassian.crowd.embedded.api.User searcher, PagerFilter pager, org.apache.lucene.search.Query andQuery)
          Search the index, and only return issues that are in the pager's range while AND'ing the raw lucene query to the generated query from the provided searchQuery, not taking into account any security constraints.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

LuceneSearchProvider

public LuceneSearchProvider(IssueFactory issueFactory,
                            SearchProviderFactory searchProviderFactory,
                            PermissionsFilterGenerator permissionsFilterGenerator,
                            SearchHandlerManager searchHandlerManager,
                            SearchSortUtil searchSortUtil,
                            LuceneQueryBuilder luceneQueryBuilder)
Method Detail

search

public SearchResults search(Query query,
                            com.atlassian.crowd.embedded.api.User searcher,
                            PagerFilter pager)
                     throws SearchException
Description copied from interface: SearchProvider
Search the index, and only return issues that are in the pager's range. Note: that this method returns read only Issue objects, and should not be used where you need the issue for update. Also note that if you are only after the number of search results use SearchProvider.searchCount(com.atlassian.query.Query ,User) as it provides better performance.

Specified by:
search in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
searcher - the user performing the search, which will be used to create a permission filter that filters out any of the results the user is not able to see and will be used to provide context for the search.
pager - Pager filter (use PagerFilter.getUnlimitedFilter() to get all issues).
Returns:
A SearchResults containing the resulting issues.
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

search

public SearchResults search(Query query,
                            com.atlassian.crowd.embedded.api.User searcher,
                            PagerFilter pager,
                            org.apache.lucene.search.Query andQuery)
                     throws SearchException
Description copied from interface: SearchProvider
Search the index, and only return issues that are in the pager's range while AND'ing the raw lucene query to the generated query from the provided searchQuery. Note that this method returns read only Issue objects, and should not be used where you need the issue for update. Also note that if you are only after the number of search results use SearchProvider.searchCount(com.atlassian.query.Query ,User) as it provides better performance.

Specified by:
search in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
searcher - the user performing the search, which will be used to create a permission filter that filters out any of the results the user is not able to see and will be used to provide context for the search.
pager - Pager filter (use PagerFilter.getUnlimitedFilter() to get all issues).
andQuery - raw lucene Query to AND with the request.
Returns:
A SearchResults containing the resulting issues.
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

searchOverrideSecurity

public SearchResults searchOverrideSecurity(Query query,
                                            com.atlassian.crowd.embedded.api.User searcher,
                                            PagerFilter pager,
                                            org.apache.lucene.search.Query andQuery)
                                     throws SearchException
Description copied from interface: SearchProvider
Search the index, and only return issues that are in the pager's range while AND'ing the raw lucene query to the generated query from the provided searchQuery, not taking into account any security constraints. Do not use this method, user SearchProvider.search(com.atlassian.query.Query , User, com.atlassian.jira.web.bean.PagerFilter, org.apache.lucene.search.Query) instead, this should only be used when performing administrative tasks where you need to know ALL the issues that will be affected. Note that this method returns read only Issue objects, and should not be used where you need the issue for update. Also note that if you are only after the number of search results use SearchProvider.searchCount(com.atlassian.query.Query, User) as it provides better performance.

Specified by:
searchOverrideSecurity in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
searcher - the user performing the search which will be used to provide context for the search.
pager - Pager filter (use PagerFilter.getUnlimitedFilter() to get all issues).
andQuery - raw lucene Query to AND with the request.
Returns:
A SearchResults containing the resulting issues.
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

searchCount

public long searchCount(Query query,
                        com.atlassian.crowd.embedded.api.User user)
                 throws SearchException
Description copied from interface: SearchProvider
Return the number of issues matching the provided search criteria. Note: This does not load all results into memory and provides better performance than SearchProvider.search(com.atlassian.query.Query ,User, com.atlassian.jira.web.bean.PagerFilter)

Specified by:
searchCount in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
user - the user performing the search which will be used to provide context for the search.
Returns:
number of matching results.
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

searchCountOverrideSecurity

public long searchCountOverrideSecurity(Query query,
                                        com.atlassian.crowd.embedded.api.User user)
                                 throws SearchException
Description copied from interface: SearchProvider
Return the number of issues matching the provided search criteria, overridding any security constraints. Do not use this method, use SearchProvider.searchCount(com.atlassian.query.Query , User) instead, this should only be used when performing administrative tasks where you need to know ALL the issues that will be affected. Note: This does not load all results into memory and provides better performance than SearchProvider.search(com.atlassian.query.Query ,User, com.atlassian.jira.web.bean.PagerFilter)

Specified by:
searchCountOverrideSecurity in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
user - the user performing the search which will be used to provide context for the search.
Returns:
number of matching results.
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

search

public void search(Query query,
                   com.atlassian.crowd.embedded.api.User user,
                   org.apache.lucene.search.Collector collector)
            throws SearchException
Description copied from interface: SearchProvider
Run a search based on the provided search criteria and, for each match, call Collector.collect(). Collectors are low level Lucene classes, but they allow issues to be placed into buckets very quickly. Many of JIRA's graphs and stats are generated in this manner. This method is useful if you need to execute a query in constant-memory (i.e. you do not want to load the results of your complete search into memory).

Specified by:
search in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
user - the user performing the search which will be used to provide context for the search.
collector - the Lucene object that will have collect called for each match.
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

search

public void search(Query query,
                   com.atlassian.crowd.embedded.api.User searcher,
                   org.apache.lucene.search.Collector collector,
                   org.apache.lucene.search.Query andQuery)
            throws SearchException
Description copied from interface: SearchProvider
Run a search based on the provided search criteria and, for each match, call Collector.collect(). Collectors are low level Lucene classes, but they allow issues to be placed into buckets very quickly. Many of JIRA's graphs and stats are generated in this manner. This method is useful if you need to execute a query in constant-memory (i.e. you do not want to load the results of your complete search into memory) and the query generated via JQL needs to be augmented with some custom Lucene query.

Specified by:
search in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
searcher - the user performing the search which will be used to provide context for the search.
collector - the Lucene object that will have collect called for each match.
andQuery - additional Lucene query to be anded with the lucene query that will be generated from JQL
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

searchOverrideSecurity

public void searchOverrideSecurity(Query query,
                                   com.atlassian.crowd.embedded.api.User user,
                                   org.apache.lucene.search.Collector collector)
                            throws SearchException
Description copied from interface: SearchProvider
Run a search based on the provided search criteria and, for each match, call Collector.collect() not taking into account any security constraints. Do not use this method, use SearchProvider.search(com.atlassian.query.Query , User, org.apache.lucene.search.Collector) instead, this should only be used when performing administrative tasks where you need to know ALL the issues that will be affected. Collectors are low level Lucene classes, but they allow issues to be placed into buckets very quickly. Many of JIRA's graphs and stats are generated in this manner. This method is useful if you need to execute a query in constant-memory (i.e. you do not want to load the results of your complete search into memory).

Specified by:
searchOverrideSecurity in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
user - the user performing the search which will be used to provide context for the search.
collector - the Lucene object that will have collect called for each match.
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

searchAndSort

public void searchAndSort(Query query,
                          com.atlassian.crowd.embedded.api.User user,
                          org.apache.lucene.search.Collector collector,
                          PagerFilter pagerFilter)
                   throws SearchException
Description copied from interface: SearchProvider
Run a search based on the provided search criteria and, for each match call Collector.collect(). This method is for Collectors that need the search results to be sorted. Note: this is much slower than using SearchProvider.search(com.atlassian.query.Query ,User, org.apache.lucene.search.Collector). You may limit the number of results being collected by the Collector using the PagerFilter parameter. This method is useful if you need to execute a query in constant-memory (i.e. you do not want to load the results of your complete search into memory).

Specified by:
searchAndSort in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
user - the user performing the search which will be used to provide context for the search.
collector - the Lucene object that will have collect called for each match.
pagerFilter - Pager filter (use PagerFilter.getUnlimitedFilter() to get all issues).
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.

searchAndSortOverrideSecurity

public void searchAndSortOverrideSecurity(Query query,
                                          com.atlassian.crowd.embedded.api.User user,
                                          org.apache.lucene.search.Collector collector,
                                          PagerFilter pagerFilter)
                                   throws SearchException
Description copied from interface: SearchProvider
Run a search based on the provided search criteria and, for each match call Collector.collect(). This method is for Collectors that need the search results to be sorted. Do not use this method, user SearchProvider.searchAndSort(com.atlassian.query.Query , User, org.apache.lucene.search.Collector, com.atlassian.jira.web.bean.PagerFilter) instead, this should only be used when performing administrative tasks where you need to know ALL the issues that will be effected. Note: this is much slower than using SearchProvider.search(com.atlassian.query.Query ,User, org.apache.lucene.search.Collector). You may limit the number of results being collected by the Collector using the PagerFilter parameter. This method is useful if you need to execute a query in constant-memory (i.e. you do not want to load the results of your complete search into memory).

Specified by:
searchAndSortOverrideSecurity in interface SearchProvider
Parameters:
query - contains the information required to perform the search.
user - the user performing the search which will be used to provide context for the search.
collector - the Lucene object that will have collect called for each match.
pagerFilter - Pager filter (use PagerFilter.getUnlimitedFilter() to get all issues).
Throws:
SearchException - thrown if there is a severe problem encountered with lucene when searching (wraps an IOException).
ClauseTooComplexSearchException - if the query or part of the query produces lucene that is too complex to be processed.


Copyright © 2002-2012 Atlassian. All Rights Reserved.