solr 对不同的值给出相同的分数
solr gives same score for different values
我在 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" />
当我在 solr 管理查询板中查询值 "am26" 时,我的文档中有以下结果。 (但是存在很多字段,我只显示 select code_text 和分数字段)
"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 这样的值?据我所知,当我们查询 "am26" 时,solr 首先将此字符串转换为小写(根据 schema.xml 中的定义),WordDelimiterFilterFactory 将字符串拆分为 am,26。所以我可以理解包含 26 和 AM 的结果,但我不知道为什么我在文档中看到 "AM232" 和 "AM273"。另外,他们有确切的分数。
如您所说,您的搜索字词将是:"am" 和“26”
但是,此搜索中没有涉及通配符。给出的所有结果都匹配 "am" 部分,但其中 none 匹配“26”。对于 "AM266",索引词是 "am" 和“266”。但是术语“26”仍然不是“266”的匹配项。我希望如果你有一份文件 "AM26",你确实会看到它比其他文件获得更高的分数。
我在 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" />
当我在 solr 管理查询板中查询值 "am26" 时,我的文档中有以下结果。 (但是存在很多字段,我只显示 select code_text 和分数字段)
"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 这样的值?据我所知,当我们查询 "am26" 时,solr 首先将此字符串转换为小写(根据 schema.xml 中的定义),WordDelimiterFilterFactory 将字符串拆分为 am,26。所以我可以理解包含 26 和 AM 的结果,但我不知道为什么我在文档中看到 "AM232" 和 "AM273"。另外,他们有确切的分数。
如您所说,您的搜索字词将是:"am" 和“26”
但是,此搜索中没有涉及通配符。给出的所有结果都匹配 "am" 部分,但其中 none 匹配“26”。对于 "AM266",索引词是 "am" 和“266”。但是术语“26”仍然不是“266”的匹配项。我希望如果你有一份文件 "AM26",你确实会看到它比其他文件获得更高的分数。