public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery, IDictionary <string, IFilter> enabledFilters) { System.Type type = GetCriteriaClass(criteria); ISearchFactoryImplementor searchFactory = ContextHelper.GetSearchFactory(GetSession(criteria)); Iesi.Collections.Generic.ISet <System.Type> types; IndexSearcher searcher = FullTextSearchHelper.BuildSearcher(searchFactory, out types, type); if (searcher == null) { throw new SearchException("Could not find a searcher for class: " + type.FullName); } Lucene.Net.Search.Query query = FullTextSearchHelper.FilterQueryByClasses(types, luceneQuery); Hits hits = searcher.Search(query); List <object> ids = new List <object>(); for (int i = 0; i < hits.Length(); i++) { object id = DocumentBuilder.GetDocumentId(searchFactory, type, hits.Doc(i)); ids.Add(id); } base.Values = ids.ToArray(); return(base.ToSqlString(criteria, criteriaQuery, enabledFilters)); }
public override SqlString ToSqlString(ICriteria criteria, ICriteriaQuery criteriaQuery) { var type = GetCriteriaClass(criteria); var searchFactory = ContextHelper.GetSearchFactory(GetSession(criteria)); var searcher = FullTextSearchHelper.BuildSearcher(searchFactory, out var types, type); if (searcher == null) { throw new SearchException("Could not find a searcher for class: " + type.FullName); } var query = FullTextSearchHelper.FilterQueryByClasses(types, luceneQuery); var results = searcher.Search(query, Int32.MaxValue); Values = results.ScoreDocs.Select(result => searcher.Doc(result.Doc)) .Select(doc => DocumentBuilder.GetDocumentId(searchFactory, type, doc)).ToArray(); return(base.ToSqlString(criteria, criteriaQuery)); }
public static IEnumerable <object> GetIds(SearchFactoryImpl sf, Type type, Query query) { Iesi.Collections.Generic.ISet <Type> types; var searcher = FullTextSearchHelper.BuildSearcher(sf, out types, type); if (searcher == null) { throw new SearchException("Could not find a searcher for class: " + type.FullName); } try { var q = FullTextSearchHelper.FilterQueryByClasses(types, query); return(GetIds(sf, searcher, type, q)); } finally { searcher.Close(); } }