Hibernating Rhinos Ltd
Oren Eini l CEO l Mobile: + 972-52-548-6969
Office: +972-4-622-7811 l Fax: +972-153-4-622-7811
--
You received this message because you are subscribed to the Google Groups "RavenDB - 2nd generation document database" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ravendb+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
var perFieldAnalyzerWrapper = previousAnalyzer as RavenPerFieldAnalyzerWrapper;if (perFieldAnalyzerWrapper != null){ var fieldsProp = previousAnalyzer.GetType().GetRuntimeFields().ToList()[1]; var analyzersMap = (IDictionary<string, Analyzer>)fieldsProp.GetValue(previousAnalyzer); var multiLanguageProperties = analyzersMap.Where(x => x.Value is MultiLanguageAnalyzer).Select(x => x.Key).ToList();
foreach (var multiLanguageProperty in multiLanguageProperties) { perFieldAnalyzerWrapper.AddAnalyzer(multiLanguageProperty, SOME_LANGUAGE_ANALYZER); }}
System.Collections.Generic.IList<IFieldable> Lucene.Net.Documents.Document.GetFields |
public Posts_Index(){ Map = posts => from post in posts select new { Id = post.Id, Title = post.Title, Body = post.Body, LanguageName = post.LanguageName, SearchContent = string.Join(" ", post.Title, post.Body), MultiLanguagePropertyNames = new [] { "SearchContent" } }; }
public class MyAnalyzerGenerator : AbstractAnalyzerGenerator
{
private readonly IDictionary<string, string[]> _multiLanguagePropertiesPerIndex = new Dictionary<string, string[]>();
public override Analyzer GenerateAnalyzerForIndexing(string indexName, Lucene.Net.Documents.Document document, Analyzer previousAnalyzer) { if (!_multiLanguagePropertiesPerIndex.ContainsKey(indexName)) { _multiLanguagePropertiesPerIndex.Add(indexName, document.GetValues("MultiLanguagePropertyNames")); }
AnalyzeMultilanguageFields(indexName, previousAnalyzer, document.Get("LanguageName")); return previousAnalyzer; }
public override Analyzer GenerateAnalyzerForQuerying(string indexName, string query, Analyzer previousAnalyzer) { var languageName = SOME_LANGUAGE; AnalyzeMultilanguageFields(indexName, previousAnalyzer, languageName); return previousAnalyzer; }
private void AnalyzeMultilanguageFields(string indexName, Analyzer previousAnalyzer, string languageName) { var multiLanguageProperties = _multiLanguagePropertiesPerIndex[indexName];
var perFieldAnalyzerWrapper = previousAnalyzer as RavenPerFieldAnalyzerWrapper; if (perFieldAnalyzerWrapper != null) {
foreach (var multiLanguageProperty in multiLanguageProperties) {
perFieldAnalyzerWrapper.AddAnalyzer(multiLanguageProperty, LANGUAGE_ANALYZER); } } }}
Send the pr