[英]Solr Search: Searching in multiple fields with "AND" Search
我是一家電子商務公司搜索引擎的產品負責人,我目前正在“發現”Solr - 因為我以前從未使用過這個引擎。 如果我沒有使用正確的術語,請提前抱歉。
我有以下典型用例:用戶尋找“Apple iPhone”。 數據集包含諸如品牌 = Apple、產品名稱 = iPhone、產品類型 = 智能手機、類別 = 智能手機等字段。
在我們當前的設置中,根據我們的外部顧問的說法,引擎提供包含蘋果或 iPhone 8 的所有結果。為了首先獲得所有蘋果 iPhone 作為結果,他們建議我們創建一個新的索引屬性,其中包含品牌、產品名稱、產品類型和類別合二為一,並用這個新屬性替換單個屬性(例如品牌、產品名稱等)。 根據他們的說法,Solr 無法提供 AND 搜索(“在其數據集中查找所有具有蘋果和 iPhone 的產品”)。
這是正確的,你會以同樣的方式處理這個用例嗎?
我很懷疑 Solr 無法在單獨的屬性中查找 Apple iPhone,然后提供在任一索引屬性中都包含這兩個術語的結果。 他們推薦的更改也意味着我們失去了粒度,因為多個字段被連接為一個。 這也意味着我們將無法再單獨提升每個屬性,因為它們已被新屬性取代。
我知道我的請求可能會被視為“新手”問題,但作為非開發人員,我仍然無法弄清楚,顧問似乎真的認為這是處理此用例的唯一方法。
感謝大家的幫助!
沒有任何理由失去粒度; 通常,您需要將字段(使用copyField
指令)復制到一個或多個字段中以支持不同類型的查詢(這也允許您使用不同的權重對不同字段中的命中進行評分)。 這樣您就可以保留所有原始字段,並且您有一個新的、單獨的字段,它將所有內容作為單個搜索字段。
根據您的查詢用例,您可能只需要edismax
查詢處理程序和qf=Brand ProductName ProductType
來查詢這些字段,並設置q.op=AND
(或mm=<factor>
)以獲得您想要的行為。 如果您無法使用qf
跨字段匹配,請使用將不同字段復制到其中的字段作為基本匹配(即添加SearchField
作為qf
的最后一個字段,如上所示),然后提高品牌/名稱/等等。 因此,僅“apple”的精確匹配得分更高。
究竟什么被認為是匹配將取決於該字段發生的標記化和過濾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.