Was.OrcSearch – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System.Collections.Generic;
2 using Lucene.Net.Analysis.Standard;
3 using Lucene.Net.Index;
4 using Lucene.Net.QueryParsers;
5 using Lucene.Net.Search;
6 using Was.OrcSearch.Extensions;
7 using Was.OrcSearch.Metadata;
8 using Was.OrcSearch.Metadata.Interfaces;
9 using Was.OrcSearch.Services.Interfaces;
10  
11 namespace Was.OrcSearch.Services
12 {
13 public class SearchQueryService : ISearchQueryService
14 {
15 public string GetSearchQuery(string filter, IEnumerable<ISearchableMetadata> searchableMetadatas)
16 {
17 if (!filter.Contains(":"))
18 {
19 filter = filter.PrepareOrcSearchFilter();
20  
21 using (var analyzer = new StandardAnalyzer(LuceneDefaults.Version))
22 {
23 var fields = new List<string>();
24 foreach (var searchableMetadata in searchableMetadatas) fields.Add(searchableMetadata.SearchName);
25  
26 var parser = new MultiFieldQueryParser(LuceneDefaults.Version, fields.ToArray(), analyzer);
27 var query = parser.Parse(filter);
28 filter = query.ToString();
29 }
30 }
31  
32 return filter;
33 }
34  
35 public string GetSearchQuery(params ISearchableMetadataValue[] searchableMetadataValues)
36 {
37 var query = new PhraseQuery();
38  
39 foreach (var searchableMetadataValue in searchableMetadataValues)
40 query.Add(new Term(searchableMetadataValue.Metadata.SearchName, searchableMetadataValue.Value));
41  
42 var filter = query.ToString();
43  
44 return GetSearchQuery(filter, new SearchableMetadata[] { });
45 }
46 }
47 }