Was.OrcSearch
/Was.OrcSearch/Helpers/Extensions.cs |
@@ -0,0 +1,40 @@ |
using System; |
using System.Collections; |
using System.Collections.Generic; |
|
namespace Was.OrcSearch.Helpers |
{ |
public static class Extensions |
{ |
/// <summary> |
/// Convert an object to an enumeration of strings. |
/// </summary> |
/// <param name="instance">the object to convert</param> |
/// <returns>a series of strings</returns> |
public static IEnumerable<string> Stringify(this object instance) |
{ |
if (instance == null) |
yield break; |
|
// Base type will be string. |
if (instance is string) |
{ |
yield return (string) instance; |
yield break; |
} |
|
// Support primitive types. |
if (instance.GetType().IsPrimitive) |
{ |
yield return instance.ToString(); |
yield break; |
} |
|
// Support for arrays. |
if (instance is Array || instance is IList) |
foreach (var element in instance as IList) |
foreach (var item in Stringify(element)) |
yield return item; |
} |
} |
} |
/Was.OrcSearch/Services/SearchServiceBase.cs |
@@ -9,6 +9,7 @@ |
using Lucene.Net.Store; |
using Was.OrcSearch.EventArgs; |
using Was.OrcSearch.Extensions; |
using Was.OrcSearch.Helpers; |
using Was.OrcSearch.Metadata.Interfaces; |
using Was.OrcSearch.Services.Interfaces; |
|
@@ -117,10 +118,10 @@ |
foreach (var searchableMetadata in searchableMetadatas) |
{ |
var searchableMetadataValue = searchableMetadata.GetValue(searchable.Instance); |
// TODO implement object to string helper. |
// Original: ObjectToStringHelper.ToString(searchableMetadataValue); |
// TODO Support more serializable types. |
var searchableMetadataValueAsString = |
searchableMetadataValue |
.ToString(); //ObjectToStringHelper.ToString(searchableMetadataValue); |
string.Join(" ", searchableMetadataValue.Stringify()); |
|
var field = new Field(searchableMetadata.SearchName, searchableMetadataValueAsString, |
Field.Store.YES, |
/Was.OrcSearch/Was.OrcSearch.csproj |
@@ -38,8 +38,8 @@ |
<Reference Include="ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL"> |
<HintPath>..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll</HintPath> |
</Reference> |
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181, processorArchitecture=MSIL"> |
<HintPath>..\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath> |
<Reference Include="Lucene.Net, Version=3.0.3.0, Culture=neutral, PublicKeyToken=85089178b9ac3181"> |
<HintPath>..\..\Corrade\packages\Lucene.Net.3.0.3\lib\NET40\Lucene.Net.dll</HintPath> |
</Reference> |
<Reference Include="System" /> |
<Reference Include="System.Core" /> |
@@ -50,6 +50,7 @@ |
<Compile Include="EventArgs\SearchEventArgs.cs" /> |
<Compile Include="Extensions\StringExtensions.cs" /> |
<Compile Include="Helpers\PathHelper.cs" /> |
<Compile Include="Helpers\Extensions.cs" /> |
<Compile Include="Metadata\AttributeMetadataCollection.cs" /> |
<Compile Include="Metadata\Interfaces\IMetadataProvider.cs" /> |
<Compile Include="Metadata\Interfaces\ISearchable.cs" /> |