我最近有意識地認爲Nhibernate.Search會將我的類的整數屬性作爲數字字段進行索引。如何在Nhibernate.Search中添加數字字段?
[Indexed]
public class Location : Entity
{
[IndexedEmbedded(Depth = 1, Prefix = "Country_")]
public virtual Country Country { get; set; }
[Field(Index.Tokenized)]
public virtual string Name { get; set; }
[Field(Index.Tokenized)]
public virtual string AlternativeNames { get; set; }
[Field(Index.Tokenized)]
public virtual string OriginalNames { get; set; }
[Field(Index.UnTokenized)]
public virtual string LocationType { get; set; }
[Field()]
public virtual int? Population { get; set; }
}
但是,當我設置排序的查詢,像這樣:
var words = query.Split(' ');
var luceneQuery = string.Join(" AND ", words.Select(x => "Name:{0}*".F(x)));
luceneQuery += " AND LocationType:locality";
var results = search.CreateFullTextQuery<Location>(luceneQuery)
.SetSort(new Sort(new SortField("Population", CultureInfo.CurrentCulture, true)))
.SetMaxResults(100)
.List<Location>();
它返回由該號碼相同的樣式排列的結果排序是這樣一句話:
City Country Region Population
New London United States North America 998
Nueva Londres Paraguay South America 971
New London United States North America 967
Londonderry United Kingdom British Islands 92133
London Kiribati Micronesia 921
London United States North America 8122
London United Kingdom British Islands 7869322
New London United States North America 7316
所以我的問題是,因爲Nhibernate.Search將此視爲文本字段,我如何將其更改爲數字字段,並且是否可以轉換或者必須重新索引每一條記錄。其中340K。
我開始感受到Nhibernate.Search的便利性,如果它不能做到這一點。也許我將不得不重新開始使用普通的Lucene.Net?
感謝所有幫助
嗨JSuar,我所知道的與Lucene和數字領域的問題,因爲我已經使用數字字段並排序它們在使用Lucene.Net之前,我的問題涉及到何時使用NHibernate.Search以及如何根據分配給模型的屬性對索引進行存儲時的字段。感謝您的建議鏈接,但Java文檔只告訴我在.Net實現中已經知道的內容。 – Richard
請問這是更多你要找的東西:http://docs.jboss.org/hibernate/search/4.1/reference/en-US/html_single/#d0e5179 – JSuar