由于 Verity 主要根据标准出现的次数来确定相关性,因此“优先排序”结果的一种方法是在索引集合时人为地将 SKU 多次附加到“正文”。
您可以在原始 SQL 查询中执行此操作,也可以在将结果集传递给 Verity 之前使用 ColdFusion 对结果集进行处理以使用 SKU 填充它。这是后一种选择的示例:
<!--- Get the product data--->
<cfquery name="qProducts" datasource="blog">
SELECT
ID
,SKU
,title
,description
FROM
products
</cfquery>
<!--- Massage the data to prioritise the SKU by creating a new query from the original --->
<cfset qProductsForIndex = QueryNew( "ID,title,body","Integer,VarChar,VarChar" )>
<cfloop query="qProducts">
<cfset QueryAddRow( qProductsForIndex )>
<cfset QuerySetCell( qProductsForIndex,"ID",qProducts.ID )>
<cfset QuerySetCell( qProductsForIndex,"title",qProducts.title )>
<!--- Add the SKU 5 times, separated by a semi-colon --->
<cfset QuerySetCell( qProductsForIndex,"body",qProducts.description & ";" & RepeatString( qProducts.SKU & ";",5 ) )>
</cfloop>
<!--- Pass the massaged query to Verity --->
<cfindex action="REFRESH"
collection="products"
type="CUSTOM"
query="qProductsForIndex"
key="ID"
title="title"
body="body">
请注意分隔额外 SKU 的分号,这可确保 Verity 将它们作为单独的匹配项进行匹配。
我使用 5 作为示例数字,但您可以从 2 开始并向上调整,直到看到您想要的结果。