QueryElevationComponent:查詢提升組件

2018-12-01 16:31 更新

查詢提升組件允許您為給定的查詢配置最佳結果,而不管正常的 Lucene 評分如何。

這有時被稱為“贊助搜索”,“編輯提升”或“最佳匹配”。此組件將用戶查詢文本與配置的頂層結果映射進行匹配。文本可以是任何字符串或非字符串的 ID,只要它被索引。盡管此組件可以與任何QueryParser一起使用,但最適合與DisMaxeDisMax一起使用。

查詢提升組件也支持分布式搜索。

本節(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ù):

queryFieldType 參數(shù)

指定應使用哪個 fieldType 來分析傳入的文本。例如,使用 LowerCaseFilter 的 fieldType 可能是合適的。

config-file 參數(shù)

定義查詢提升的文件的路徑。該文件必須存在于<instanceDir>/conf/<config-file><dataDir>/<config-file>。如果文件存在于conf/目錄中,它將在啟動時加載一次。如果它存在于data/目錄中,它將被重載為每個 IndexReader。

forceElevation 參數(shù)

默認情況下,該組件遵守所請求的sort參數(shù):如果請求要求按日期排序,它將按日期排序結果。如果為forceElevation=true(默認),結果將首先返回提升的文檔,然后按日期排序。

elevate.xml文件

提升查詢結果可以在 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 參數(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 參數(shù)

您可以在運行時通過添加 forceElevation=true 到查詢網(wǎng)址來強制提升:

http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&debugQuery=true&enableElevation=true&forceElevation=true

獨有的參數(shù)

您可以強制 Solr 通過添加 exclusive=true 到 URL 來僅返回在提升文件中指定的結果:

http://localhost:8983/solr/techproducts/elevate?q=ipod&df=text&debugQuery=true&exclusive=true

文檔轉換器和 markExcludes 參數(shù)

該 [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]

elevateIds和excludeIds 參數(shù)

在使用提升組件時,可以在請求時重寫預先配置的查詢高程列表,以使用這些請求參數(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ù)。也就是說,如果查詢包含 fq 參數(shù),即使 elevate.xml 將其他文檔添加到結果集,所有結果也將在該過濾器內。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號