Was.OrcSearch – Blame information for rev 1
?pathlinks?
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 | } |