gpt4 book ai didi

Solr 和产品 SKU

转载 作者:行者123 更新时间:2023-12-01 00:09:31 27 4
gpt4 key购买 nike

我正在为我的产品 SKU 编写自定义文本字段类型。

如果我有一个 SKU,例如 ABC-DEF123G/5(仅作为示例),我希望用户能够使用或不使用标点符号进行搜索。在许多情况下,只有部分 SKU 是相关的,例如ABC-DEF123 在我的示例中。

到目前为止,我的 schema.xml 看起来像:

<fieldType name="sku" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
splitOnCaseChange="0"
splitOnNumerics="0"
stemEnglishPossessive="0"
catenateAll="1"
/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15"/>
</analyzer>
</fieldType>

<!-- For use in Sunspot: -->
<dynamicField name="*_sku" stored="false" type="sku" multiValued="true" indexed="true"/>

这很有效,因为我可以搜索 SKU 的各个部分,例如DEF123 并获得适当的结果(感谢 ngram 过滤器)。但是,不带标点分隔符的搜索不会返回任何匹配项:ABC-DEF123G/5 可以,但 ABCDEF123G5 不行。

当我对我的架构进行分析时,我发现搜索 ABCDEF123G5 已突出显示匹配项,但在运行实际查询时没有返回任何结果。

我已重新启动 Solr 并重新索引我的文档。很多次。

在索引 SKU 或类似物方面有什么智慧珠?


这位编辑 ( aitchnyu ) 从维基百科添加了这个:

A stock-keeping unit or SKU is a number or code used to identify each unique product or item for sale in a store or other business.

It is a unique identifier for each distinct product and service that can be purchased. The usage of SKU is rooted in data management, enabling the company to systematically track its inventory or product availability, such as in warehouses and retail outlets. They are often assigned and serialized at the merchant level. Each SKU is attached to an item, variant, product line, bundle, service, fee, or attachment. SKUs are often used to refer to different versions of the same product. For example, a retail store carrying the game Guitar Hero 3 might have six SKUs, two for each of the three platforms—one with and one without a guitar controller.

最佳答案

经过几天的周期性研究,我终于确定了以下几点:

<fieldType name="sku" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="15"/>
</analyzer>
</fieldType>

这是根据同事提供的默认版本的 schema.xml 改编的。

编辑:

通过更改为边缘 n-gram 和缩短 n-gram 最小长度,进一步提高了相关性。

<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>

关于Solr 和产品 SKU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10474890/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com