solr为不同的值给出相同的分数

时间:2015-07-27 15:33:31

标签: solr lucene

我在schema.xml中定义了字段类型,如下所示;

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100">
        <analyzer>
            <tokenizer class="solr.StandardTokenizerFactory" />
            <filter class="solr.LowerCaseFilterFactory" />
            <filter class="solr.WordDelimiterFilterFactory"
                generateWordParts="1" generateNumberParts="1" catenateWords="1"
                catenateNumbers="1" catenateAll="0" splitOnCaseChange="0" />
            <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        </analyzer>
    </fieldType>

这是我的领域;

<dynamicField name="*_text" type="text" indexed="true" stored="true" />

当我查询价值&#34; am26&#34;在solr管理查询板中,我在我的文档中有以下结果。 (但是存在许多字段,我只选择要显示的code_text和score字段)

"response": {
"numFound": 6,
"start": 0,
"maxScore": 1184.7297,
"docs": [
  {
    "code_text": "AM232",
    "score": 1184.7297
  },
  {
    "code_text": "AM238",
    "score": 1184.7297
  },
  {
    "code_text": "AM266",
    "score": 1184.7297
  },
  {
    "code_text": "AM268",
    "score": 1184.7297
  },
  {
    "code_text": "AM269",
    "score": 1184.7297
  },
  {
    "code_text": "AM273",
    "score": 1184.7297
  },
]

为什么AM232和AM266的得分可能相同?此外,为什么我们可以在结果中看到AM232和AM273等值?据我所知,当我们查询&#34; am26&#34; solr首先将此字符串转换为小写(根据schema.xml中的定义),WordDelimiterFilterFactory将字符串拆分为am,26。所以我可以理解包括26和AM在内的结果,但我不知道为什么我会看到&#34; AM232&#34;和&#34; AM273&#34;在我的文件中。另外他们有准确的分数。

1 个答案:

答案 0 :(得分:2)

正如您所说,您的搜索字词将是:“am”和“26”

但是,此搜索中没有涉及通配符。给出的所有结果都匹配“am”部分,但 none 匹配“26”。对于“AM266”,索引术语是“am”和“266”。但“26”这个词仍然不能与“266”相提并论。我希望如果你有一份文件“AM26”,你确实会看到其他人获得更高的分数。

相关问题