W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
查詢提升組件允許您為給定的查詢配置最佳結果,而不管正常的 Lucene 評分如何。
這有時被稱為“贊助搜索”,“編輯提升”或“最佳匹配”。此組件將用戶查詢文本與配置的頂層結果映射進行匹配。文本可以是任何字符串或非字符串的 ID,只要它被索引。盡管此組件可以與任何QueryParser一起使用,但最適合與DisMax或eDisMax一起使用。
查詢提升組件也支持分布式搜索。
本節(jié)中使用的所有示例配置和查詢都假定您正在運行 Solr 的 techproducts 示例,如下:
bin/solr -e techproducts
您可以在 solrconfig.xml 文件中配置查詢提升組件。類似 QueryElevationComponent 的搜索組件可能會被添加到任何請求處理程序;這里使用了一個專門的請求處理程序。
<searchComponent name="elevator" class="solr.QueryElevationComponent" >
<!-- pick a fieldType to analyze queries -->
<str name="queryFieldType">string</str>
<str name="config-file">elevate.xml</str>
</searchComponent>
<requestHandler name="/elevate" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="echoParams">explicit</str>
</lst>
<arr name="last-components">
<str>elevator</str>
</arr>
</requestHandler>
或者,在“查詢提升組件”配置中,還可以指定以下內容以將編輯結果與“正?!苯Y果區(qū)分開來:
<str name="editorialMarkerFieldName">foo</str>
查詢提升搜索組件采用以下參數(shù):
指定應使用哪個 fieldType 來分析傳入的文本。例如,使用 LowerCaseFilter 的 fieldType 可能是合適的。
定義查詢提升的文件的路徑。該文件必須存在于<instanceDir>/conf/<config-file>
或<dataDir>/<config-file>
。如果文件存在于conf/
目錄中,它將在啟動時加載一次。如果它存在于data/
目錄中,它將被重載為每個 IndexReader。
默認情況下,該組件遵守所請求的sort
參數(shù):如果請求要求按日期排序,它將按日期排序結果。如果為forceElevation=true
(默認),結果將首先返回提升的文檔,然后按日期排序。
提升查詢結果可以在 config-file 參數(shù)中指定的外部 XML 文件中進行配置。一個 elevate.xml 文件可能看起來像這樣:
<elevate>
<query text="foo bar">
<doc id="1" />
<doc id="2" />
<doc id="3" />
</query>
<query text="ipod">
<doc id="MA147LL/A" /> <!-- put the actual ipod at the top -->
<doc id="IW-02" exclude="true" /> <!-- exclude this cable -->
</query>
</elevate>
在這個例子中,查詢 “foo bar” 將首先返回文檔1,2和3,然后是對同一個查詢通常出現(xiàn)的任何情況。對于查詢 “ipod”,它將首先返回 “MA147LL / A”,并確保 “IW-02” 不在結果集中。
如果要升級的文檔沒有在 elevate.xml 文件中定義,則應該在查詢時使用 elevateIds 參數(shù)傳入。
對于調試,查看有和沒有提升的文檔的結果可能是有用的。要隱藏結果,請使用 enableElevation=false:
http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&debugQuery=true&enableElevation=true
http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&debugQuery=true&enableElevation=false
您可以在運行時通過添加 forceElevation=true 到查詢網(wǎng)址來強制提升:
http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&debugQuery=true&enableElevation=true&forceElevation=true
您可以強制 Solr 通過添加 exclusive=true 到 URL 來僅返回在提升文件中指定的結果:
http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&debugQuery=true&exclusive=true
該 [elevated] 文檔轉換器可用于對每個文檔進行注釋,并提供有關是否提升的信息:
http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&fl=id,[elevated]
同樣,在故障排除時查看所有匹配的文檔 (包括提升配置通常會排除的文檔) 也很有用。這可以通過使用 markExcludes = true 參數(shù),然后使用 [excluded] 轉換器:
http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&markExcludes=true&fl=id,[elevated],[excluded]
在使用提升組件時,可以在請求時重寫預先配置的查詢高程列表,以使用這些請求參數(shù)中指定的唯一鍵。
例如,在下面的請求中,文件 3007WFP 和 9885A004 將被提升,文件 IW-02 將被排除 - 無論在 elevate.xml 中為查詢“cable”配置了哪些提升或排除:
http://localhost:8983/solr/techproducts/elevate?q=cable&df=text&excludeIds=IW-02&elevateIds=3007WFP,9885A004
如果在請求時指定了這些參數(shù)中的任何一個,則將忽略查詢的整個提升配置。
例如,在下面的請求文件中,IW-02 和 F8V7067-APL-KIT 將被提升,并且不會排除任何文檔 - 無論在 elevate.xml 中為查詢 “ipod” 配置了什么樣的提升或排除:
http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&elevateIds=IW-02,F8V7067-APL-KIT
查詢提升尊重標準過濾器查詢(fq)參數(shù)。也就是說,如果查詢包含 fq 參數(shù),即使 elevate.xml 將其他文檔添加到結果集,所有結果也將在該過濾器內。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: