Lorsque j'utilisais Lucene pour indexer mes entités, j'avais l'habitude de mettre toutes mes propriétés indexées dans un champ nommé "all", pour effectuer une recherche sur " tous "de mes types d'entités. Maintenant, en utilisant NHibernate.Search, je ne trouve pas comment faire cela. J'ai essayé ceci:(N) Hibernate.Search: Indexer différentes propriétés dans un champ
[Indexed(Index = "MyIndex")]
public class Post
{
[DocumentId]
public virtual int Id { get; set; }
[IndexedEmbedded]
public virtual Author Author { get; set; }
[IndexedEmbedded]
public virtual IEnumerable<Category> Categories { get; set; }
[Field(Index.Tokenized, Store = Store.Yes)]
[Field(Name = "All", Index = Index.Tokenized, Store = Store.Yes)]
public virtual string Name { get; set; }
[Field(Name = "All", Index = Index.Tokenized, Store = Store.Yes)]
[Field(Index.Tokenized, Store = Store.Yes)]
public virtual string Body { get; set; }
}
Mais j'ai une exception levée: « clé déjà présent dans le dictionnaire », en ligne ScopedAnalyzer.cs 26:
scopedAnalyzers.Add(scope, analyzer);
Si la « portée » est le nom de l'index champ (ici, "Tous"). Si je mets un chèque comme
if(!scopedAnalyzers.ContainsKey(scope))
il fonctionnera très bien: je vais avoir 2 champs pour chaque document « Post », l'un avec le corps, l'un avec le nom. Cependant, je ne suis pas facile de modifier le code source NHibernate.Search.
Quelqu'un at-il une suggestion sur la façon d'indexer différentes propriétés dans un domaine?
tagged hibernate.search, car les API sont (tout à fait) les mêmes ... – mathieu