2

我有两个字段,一个是复制字段。

  1. <field name="product_name" type="text_wslc" indexed="true" stored="true" required="true" multiValued="false"/>

  2. <field name="dummy_name" type="string_ci" indexed="true" stored="false" required="true" />

其定义如下

<fieldType name="text_wslc" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
 <filter class="solr.WordDelimiterFilterFactory"
                                 generateWordParts="1"
                                 generateNumberParts="1"
                                 catenateWords="1"
                                 catenateNumbers="1"
                                 catenateAll="1"
                                 preserveOriginal="1"
                                 />

    <filterclass="solr.LowerCaseFilterFactory"/>
<filter class="solr.SnowballPorterFilterFactory" language="English" />
                    <filter class="solr.PorterStemFilterFactory"/>
                    <filter class="solr.KStemFilterFactory"/>
                    <filter class="solr.EnglishMinimalStemFilterFactory"/>
                            </analyzer>


    <fieldType name="string_ci" class="solr.TextField" sortMissingLast="true" omitNorms="true">
          <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.SnowballPorterFilterFactory" language="English" />
            <filter class="solr.KStemFilterFactory"/>
            <filter class="solr.EnglishMinimalStemFilterFactory"/>
        </analyzer>
    </fieldType>

提交的副本是首先获得完全匹配的结果。我的查询是这样的

/select?q=("laptop+bag")&df=product_name&defType=edismax&qf=dummy_name^20000+product_name^0.01

它给了我大约 8000 个结果

但实际结果是20000左右

 /select?q=(laptop+bag)&df=product_name&defType=edismax&qf=dummy_name^20000+product_name^0.01 

但它不会首先列出确切的结果。我该如何解决这个问题?我的查询有问题吗?这是我的字段和定义

4

1 回答 1

2

你有几件事在这里发生。

首先,搜索“笔记本电脑包”和笔记本电脑包是两个不同的东西,这就是你得到不同结果的原因。第一个将搜索确切的短语,而后者将找到任何关键字。因此,当您在搜索查询周围加上引号时,您看到的结果较少是有道理的。

其次,我认为您对 string_ci 字段的字段定义需要进行一些调整,此时您的词干意图对我来说有点神秘。此外,请确保该字段的索引设置和查询设置相对相似。使用 Solr Admin UI Analyzer 调整字段并查看您的更改如何影响数据输入/输出。

最后,您发布的最后一个字段配置没有字段标签。总的来说,很难说具体问题出在哪里。我建议从运行一些查询开始并将 debug 设置为 true 以查看如何评估相关性。我敢打赌,您的字符串字段的索引和查询参数不一致。如果这是真的,您可以在 Admin UI Analyzer 中验证这一点。

祝你好运弄清楚这一点。

于 2015-06-11T12:29:25.450 回答