簡體   English   中英

Sitecore 7:按字段排序Lucene結果

[英]Sitecore 7: Sorting Lucene results by field

我們試圖通過Title字段對Lucene結果進行排序。

根據我對Lucene的理解,這需要該字段為NOT_ANALYZED。

根據我在論壇上看到的內容,這也要求我們使用LowerCaseKeywordAnalyzer。 這里

我無法弄清楚如何將它們組合在一起,這就是我現在所擁有的,並且排序不起作用:

在Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration中:

<fields hint="raw:AddCustomField">
  <!--...-->
  <field luceneName="titleForSorting"     storageType="yes" indexType="untokenized">Title</field>
</fields>

我們的搜索結果類:

public class ContentSearchResultItem : SearchResultItem
{
    public virtual string Title { get; set; }

    [IndexField("titleForSorting")] 
    public virtual string TitleForSorting { get; set; }
}

我們的搜索實施:

using (var context = ContentSearchManager.GetIndex(Context.Indexname).CreateSearchContext())
{
    var query = context.GetQueryable<ContentSearchResultItem>()
        .Where(x => x.Title == "New York")
        .OrderBy(x => x.TitleForSorting);

    var searchResult = query.GetResults();
    var hitsQuery = searchResult.Hits;

    // Or sort here ??
    // hitsQuery = hitsQuery.OrderBy(x => x.Document.TitleForSorting);

    var results = hitsResults.Select(x => x.Document).ToArray();
}

如上所述,我也讀過我們應該使用LowerCaseKeywordAnalyzer。 但無法弄清楚在哪里配置它。 似乎沒有提供任何添加選項的地方。

歡迎任何幫助,謝謝!

你是對的,如果你排序最好的話,字段不會被標記為,如果你有空格等,它會將它分解成小標記並對它們進行排序。

您可以將自定義分析器指定為fieldMap部分中field元素的子元素。例如

<fieldNames hint="raw:AddFieldByFieldName">
   <field fieldName="titleForSorting" storageType="YES" indexType="UN_TOKENIZED"    vectorType="NO" boost="1f" type="System.String" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">
       <analyzer type="Sitecore.ContentSearch.LuceneProvider.Analyzers.LowerCaseKeywordAnalyzer, Sitecore.ContentSearch.LuceneProvider" />
   </field>
   ...
</fields>

(自Sitecore 7.0 rev.130918起有效)

對我有用的是在where子句后添加.ToList

var query = context.GetQueryable<ContentSearchResultItem>()
        .Where(x => x.Title == "New York")
        .ToList()
        .OrderBy(x => x.TitleForSorting);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM