solr長文字搜尋問題

2021-09-24 14:33:38 字數 2002 閱讀 3986

針對之前的解決經驗,做乙個小節,後面可能隨著對排序質量的提高,會越來越突出。

請大家拍磚和豐富這方面的經驗,提公升解決需求的效率。

分析

當前預設都是

phrasequery

執行,對指定域先分詞,然後按照短語去查詢,當出現分詞交叉後,結果就悲劇了。

當非自動生成

phrasequery

時候,指定域也會分詞,然後按照

and或者

or拼接起來去查,此時,短語的關聯性丟失,挨在一起的可能沒有排在前面,儘管有結果。

當不自動生成

phrasequery

時候,「「

將查詢出當做整體,此時依然會分詞,只是查詢時分詞後的拼接去查。例如

「交易成功」轉為

「交易成功」

當擴充套件查詢串去查,可能結果來自擴充套件串,有結果但不一定就是期望。

改為建索引最多分詞、查詢最長匹配,能解壓一部分場景需求,對於精準查詢的短語、長文字尤其效果好,對於追求結果最多不適應。

或者業務執行分詞然後按照業務需求執行坡度或者相關性激勵來調整相關性。例如(交易

成功)~12and

交易^10

成功^2

總結:

新業務依賴長文字查詢的,需要

daily

新的對精準匹配要求高的檢驗使用

ik分詞,分別配置建索引和查詢的分詞模式。

dismaxqueryparse

能有效的減少查詢

io和「去重「,完全可以替代

or擴充套件查詢,目前發現乙個不友好,例如

「成功頁面

交易成功」,這個串中「成功」分量非常大,導致

結果排序有點糟糕。

dismaqueryparse

覆蓋lucenequeryparse

全部功能,同時提供更豐富的查詢相關性設定

,分詞內部關係式

or,一定能保證有結果,

配飾使用方法,在

solrconfig.xmlrequesthandler

中配置edismax

phrasequery

不啟用,一種方法是

schema

verison

定義為1.4

就可以了,另外是

fieldtype

中顯示定義不生成,同時

solrconfig

中配置lucene

版本34

問題背景

使用paoding

分詞,預設

and,

autogeneralphrasequery

=true

搜「交易成功

幻燈片」

沒有結果–》

and之後幻燈片部分沒有結果導致沒有結果

搜「交易成功」

有結果

搜「幻燈片」

沒有結果

—-》原因是分詞交叉

使用paoding

分詞,autogeneralphrasequery=false

搜「交易成功

幻燈片」

有結果結果來自交易成功部分

搜「交易成功」

有結果

搜「幻燈片」

沒有結果

交叉依然沒有結果

使用paoding

分詞,autogeneralphrasequery=false

擴充套件or

搜「交易成功

幻燈片」

擴充套件為「交易成功

幻燈片」

or「交易成功

幻燈片」

搜「交易成功」

擴充套件為「交易成功」

or「交易成功

」有結果

多餘io

出現了

搜「幻燈片」

擴充套件為「幻燈片」or「

幻燈片」

有結果結果排序與期望相差很遠,排在一起的沒在前面

Formscript 讀取長文字

讀長文字關鍵是找到它的object,object名字一般跟它的 header table 的名字一樣。找到表名字後,可以去 transaction code se75那核對,順便看看id是那乙個。找到object跟id後,就要知道它的tdname是什麼,一般來說是一種document number ...

HTML spring mvc超長文字

問題描述 使用富文字編輯器的文字框,輸入的文字過長 但文字必須要這麼長 正常的寫法後端報錯 問題解決 1.將請求型別修改為post,因為post沒有大小限制 2.一般來說,都是tomcat的配置有限制,因而,將最大header設定為102400 否則會報request header is too l...

SAP長文字讀取

長文字涉及到兩個 stxh 抬頭 stxl 行專案 中。1 讀取方法 read text 結果放在乙個表中,迴圈讀出 2 難點 引數查詢 方法 先維護乙個,然後在底表 stxh中 按時間找到那一條,然後就可以知道引數了。3 容易遺漏的語言問題 3.1 先從 stxh 讀取語言 3.2 convers...