在solr.StrField

时间:2016-06-10 00:36:03

标签: solr cassandra datastax-enterprise

  1. 字段类型:

    fieldType name =" StrCollectionField"类=" solr.StrField" omitNorms ="真"多值="真" docValues ="真"

    字段名称=" po_line_status_code"类型=" StrCollectionField"索引=#&34;真"存储="真"需要="假" docValues ="假"

    po_no是PK

  2. 指数值:po_line_status_code:[3700.100]

  3. 搜索查询:po_line_status_code:(1100.200 1100.500 1100.600 1100.400 1100.300 1100.750 1100.450)

  4. 结果: 使用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

1 个答案:

答案 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查询匹配。