第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Solr中按多值字段的升序?qū)λ阉鹘Y果進行排序

在Solr中按多值字段的升序?qū)λ阉鹘Y果進行排序

繁花不似錦 2022-11-30 11:18:31
我正在使用version 6.6.0. 我有一個標題(text_general)、描述(text_general)、id(整數(shù))的模式。當我搜索關鍵字以按標題的升序列出結果時,我的代碼返回錯誤無法在多值字段上排序:標題。我嘗試使用以下 3 種方法設置排序SolrQuery query = new SolrQuery();1. query.setSort("title", SolrQuery.ORDER order);2. query.addSort("title", SolrQuery.ORDER order);3. SortClause ab = new SolrQuery.SortClause("title", SolrQuery.ORDER.asc);   query.addSort(ab);但所有這些都返回相同的錯誤我參考這個答案找到了解決方案它說要使用最小/最大函數(shù)。query.setSort(field("pageTitle",min), ORDER.asc); 這是我要設置為查詢的內(nèi)容,我不明白這里使用的參數(shù)是什么。這是我正在使用的 Maven 依賴項<dependency>    <groupId>org.apache.solr</groupId>    <artifactId>solr-solrj</artifactId>    <version>6.5.1</version></dependency>
查看完整描述

2 回答

?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

除非title實際上是 multiValued - 你的帖子可以有多個標題 - 你應該在你的架構中定義它multiValued="false"。但是,還有第二個問題——默認類型的字段text_general不適合排序,因為它會生成多個標記,一個標記對應標題中的每個單詞。這對于搜索很有用,但在排序時會給出奇怪且不直觀的結果。

因此,改為定義一個title_sort字段并使用帶有 和 的字段類型KeywordTokenizer(如果您想要不區(qū)分大小寫的排序),或者如果您想要區(qū)分大小寫的排序,請為該字段使用已經(jīng)定義的字段類型。LowerCaseFilterstringtitle_sort


查看完整回答
反對 回復 2022-11-30
?
倚天杖

TA貢獻1828條經(jīng)驗 獲得超3個贊

首先要檢查的是您是否真的需要該標題字段是多值的,或者您的文檔是否真的有多個標題?如果沒有,您只需要通過設置來修復字段定義multivalued="false"。


也就是說,除非確定應該使用這些多個值中的哪一個進行排序,或者如何將它們組合成一個,否則對多值字段進行排序是沒有意義的。


假設我們需要按標題(按字母順序)對給定的結果集進行排序,首先使用單值標題字段:


# Unsorted

"docs": [

  { "id": "1", "title": "One" },

  { "id": "2", "title": "Two" },

  { "id": "3", "title": "Three" },

]


# Sorted

"docs": [

  { "id": "1", "title": "One" },

  { "id": "3", "title": "Three" },

  { "id": "2", "title": "Two" },

]


# -> ok no problem here

現(xiàn)在不可能像現(xiàn)在這樣對多值字段應用相同的邏輯,您必須確定在每個文檔中使用哪個標題才能正確排序它們:


# Unorted

"docs": [

  { "id": "1", "title": ["One", "z-One", "a-One"] },

  { "id": "2", "title": ["Two", "z-Two", "a-Two"] },

  { "id": "3", "title": ["Three", "z-Three", "a-Three"] }

]

希望 Solr 允許通過函數(shù)的輸出對結果進行排序,這意味著您可以使用 Solr 的任何函數(shù)查詢來“獲取”每個標題字段的單個值。你提到的答案是一個很好的例子,即使它可能不適合你(因為標題需要啟用 docValues - 取決于字段定義 - 并且知道最大/最小函數(shù)應該只與數(shù)值一起使用),只是為了得到主意 :


# here the 2nd argument is a callback to max(), used precisely to get a single value from title

sort=field(title,max) asc


查看完整回答
反對 回復 2022-11-30
  • 2 回答
  • 0 關注
  • 333 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號