您應該在schema.xml
中定義另一個字段,該字段不會對您的數據進行任何分析。你的情況要做到這一點最簡單的方法可能是執行以下操作:
<field name="exact_description" type="string" indexed="true" stored="false" multiValued="true" />
<copyField source="originalColumnName" dest="exact_description" docValues="true" />
使用string
型將繼續從Solr的標記化或做其他事情你的數據。
然後,構建查詢時,你可以把類似下面的查詢的其餘部分之前:
exact_description:"hello man"^100.0
確保你把你所選擇的升壓(在^100.0
)上exact_description
,所以完全匹配將被強制到結果的頂部。
當您創建新的字段時,請確保您將其基於未對其執行任何分析的字段。舉例來說,在我的架構,我有一個叫exact_match
場,這是從下面複製:
<field name="match" type="string" indexed="false" stored="true" required="false" omitNorms="true" />
現在,我可以只使用match
在搜索精確的匹配,因爲match
只是一個字符串,但規範的原因,我不得不創建exact_match
這樣的:
<field name="exact_match" type="string" indexed="true" stored="false" multiValued="true" />
<copyField source="match" dest="exact_match" docValues="true" />
對不起,不過我不能」噸解決這個:(我發佈我的架構作爲答案。請檢查並幫助我,我錯了 – Niranjan
@Niranjan我給你添加了一些信息。我還建議你在這個問題上刪除你的答案並編輯你的問題以包含模式。這將有助於未來有同樣問題的其他人在問題中獲得所有相關信息。 – TMBT
這一個工作。非常感謝。我也從答案部分刪除了我的模式... – Niranjan