仅返回在所有字段中匹配的搜索结果



我有名称和维度的字段。这些字段是:NamedimensionLengthdimensionWidthdimensionHeight

我希望查询productX 10x20仅返回包含两个维度的匹配项。所以上面的查询可以返回productX 10x20x30productX 10x30x20,但不应该返回productX 10x30x40

第一个结果很好,但我得到了许多其他不相关的匹配。任何想法如何避免这些不相关的结果?

澄清一下,字段是:

<field indexed="true" multiValued="true" name="Height_mm_Copy" stored="false" type="dimension"/>
<field indexed="true" multiValued="true" name="Outside_diameter_mm_Copy" stored="false" type="dimension"/>
<field indexed="true" multiValued="true" name="Inside_diameter_mm_Copy" stored="false" type="dimension"/>
<field indexed="true" name="name" stored="true" type="title"/>

维度的字段类型:

<fieldType class="solr.TextField" name="dimension" omitNorms="true" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(d+)+([.][0])" replacement="$1"/>
<filter class="solr.TrimFilterFactory"/> 
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="," replace="all" replacement="."/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(d+)+([.][0])" replacement="$1"/>
<filter catenateAll="0" catenateNumbers="0" catenateWords="0" class="solr.WordDelimiterFilterFactory" generateNumberParts="1" generateWordParts="0" preserveOriginal="1" splitOnCaseChange="0" splitOnNumerics="1" types="wdfftypes.txt"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>

请求处理程序:

<requestHandler name="dismax" class="solr.SearchHandler" >
<lst name="defaults">
<str name="defType">dismax</str>
<str name="echoParams">explicit</str>
<float name="tie">0.3</float>
<str name="qf">
supplierArticleId_Prefix
</str>     
<str name="fl">
UUID,score
</str>
<str name="mm">
3&lt;-1 5&lt;-2 6&lt;90%
</str>
<int name="ps">100</int>
<str name="q.alt">*:*</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>

通过制作"name"的复制字段来解决它。通过使用<filter class="solr.PatternCaptureGroupFilterFactory" pattern="(d+/*[xX]d+)" preserve_original="false"/>字段中键入此字段。因此,从字符串"product 10x20x30"中,只有"10x20"保留在此字段中的索引。

相关内容

  • 没有找到相关文章

最新更新