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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在Solr中按多值字段的升序?qū)λ阉鹘Y(jié)果進(jìn)行排序

在Solr中按多值字段的升序?qū)λ阉鹘Y(jié)果進(jìn)行排序

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

2 回答

?
縹緲止盈

TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊

除非title實(shí)際上是 multiValued - 你的帖子可以有多個(gè)標(biāo)題 - 你應(yīng)該在你的架構(gòu)中定義它multiValued="false"。但是,還有第二個(gè)問題——默認(rèn)類型的字段text_general不適合排序,因?yàn)樗鼤?huì)生成多個(gè)標(biāo)記,一個(gè)標(biāo)記對(duì)應(yīng)標(biāo)題中的每個(gè)單詞。這對(duì)于搜索很有用,但在排序時(shí)會(huì)給出奇怪且不直觀的結(jié)果。

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


查看完整回答
反對(duì) 回復(fù) 2022-11-30
?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

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


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


假設(shè)我們需要按標(biāo)題(按字母順序)對(duì)給定的結(jié)果集進(jìn)行排序,首先使用單值標(biāo)題字段:


# 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)在這樣對(duì)多值字段應(yīng)用相同的邏輯,您必須確定在每個(gè)文檔中使用哪個(gè)標(biāo)題才能正確排序它們:


# 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ù)的輸出對(duì)結(jié)果進(jìn)行排序,這意味著您可以使用 Solr 的任何函數(shù)查詢來“獲取”每個(gè)標(biāo)題字段的單個(gè)值。你提到的答案是一個(gè)很好的例子,即使它可能不適合你(因?yàn)闃?biāo)題需要啟用 docValues - 取決于字段定義 - 并且知道最大/最小函數(shù)應(yīng)該只與數(shù)值一起使用),只是為了得到主意 :


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

sort=field(title,max) asc


查看完整回答
反對(duì) 回復(fù) 2022-11-30
  • 2 回答
  • 0 關(guān)注
  • 347 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)