字段类型:
fieldType name =" StrCollectionField"类=" solr.StrField" omitNorms ="真"多值="真" docValues ="真"
字段名称=" po_line_status_code"类型=" StrCollectionField"索引=#&34;真"存储="真"需要="假" docValues ="假"
po_no是PK
指数值:po_line_status_code:[3700.100]
搜索查询:po_line_status_code:(1100.200 1100.500 1100.600 1100.400 1100.300 1100.750 1100.450)
结果: 使用po_line_status_code获得结果:[3700.100]。
Solr是否在内部将包含点的solr.StrField标记为或者是否正在进行某些正则表达式匹配?对我来说听起来像个小虫。
当我们将查询更改为以下某个内容时,我们无法获取此文档 1 GT; po_line_status_code:(1200.200 1200.500 1200.600 1200.400 1200.300 1200.750 1200.450) 2 - ; po_line_status_code:(1100.200 1100.500 1100.600 1100.400 1100.300 1100.750 1100.450)AND po_no:938792842
我们正在使用DSE版本:4.7.4使用Apache Solr 4.10.3.0.203。
调试查询从一个返回错误文档的服务器输出: response = {numFound = 2,start = 0,docs = [SolrDocument {po_no = 4575419580094,po_line_status_code = [3700.4031]},SolrDocument {po_no = 1575479951283,po_line_status_code = [3700.100]}]},debug = {rawquerystring = po_line_status_code :( 3 1100.200 29 5 6 1100.300 63 199 1100.500 200 1100.600 198 1100.400 343 344 345 346 347 409 410 428 1100.750 1100.450),querystring = po_line_status_code:(3 1100.200 29 5 6 1100.300 63 199 1100.500 200 1100.600 198 1100.400 343 344 345 346 347 409 410 428 1100.750 1100.450)]
我也在回复中看到以下内容,我认为这与排名有关:
否匹配所需子句(po_line_status_code:3 po_line_status_code:1100.200 po_line_status_code:29 po_line_status_code:5 po_line_status_code:6 po_line_status_code:1100.300 po_line_status_code:63 po_line_status_code:199 po_line_status_code:1100.500 po_line_status_code:200 po_line_status_code:1100.600 po_line_status_code :198 po_line_status_code:1100 po_line_status_code:343 po_line_status_code:345 po_line_status_code:346 po_line_status_code:347 po_line_status_code:409 po_line_status_code:410 po_line_status_code:428 po_line_status_code:1100.750 po_line_status_code:1100.450)\ n 0.0 =(NON-MATCH)产品:\ n 0.0 =(非匹配)总和:\ n 0.0 =坐标(0/23)\ n 0.015334824
此外,它可能与重新索引有关吗?如果我重新索引我的文档会解决问题吗?
可以找到包含solr架构和solr配置的doc文件的链接here
答案 0 :(得分:0)
由于评论不允许格式化,我不得不将其放在答案中。
不,它不是版本问题或令牌化程序问题或solr中的错误。
solr.StrField在分析或查询上都没有标记化。它匹配其他东西。你可以发布solrconfig.xml和schema.xml吗?
如果您正在搜索po_line_status_code,这是您应该看到的调试:
"querystring": " po_line_status_code:(1100.200 1100.500 1100.600 1100.400 1100.300 1100.750 1100.450)",
"parsedquery": "(+(po_line_status_code:1100.200 po_line_status_code:1100.500 po_line_status_code:1100.600 po_line_status_code:1100.400 po_line_status_code:1100.300 po_line_status_code:1100.750 po_line_status_code:1100.450))/",
而你所看到的是
querystring=ship_node:610055 AND po_line_status_code:(3 1100.200 29 5 6 1100.300 63 199 1100.500 200 1100.600 198 1100.400 343 344 345 346 347 409 410 428 1100.750 1100.450) AND expected_ship_date:[2016-02-03T16:00:00.000Z TO 2016-06-09T13:59:59.059Z]
因此您的查询字符串已被更改。我假设您的所有查询都是通过solr管理工具进行的?所以这应该让DSE退出循环。
我仍然不希望您的查询匹配,但事情比您提出的要复杂得多,因为您的查询中也有ship_node和expected_ship_date。
哦不符合要求的条款表示你没有与po_line_status_code查询匹配。