2015-03-02 113 views
1

过程中使用_version_场我有_version_字段的默认声明我schema.xml中力Solr的不是搜索

<field name="_version_" type="long" indexed="true" stored="true" 
    multiValued="false"/> 

我读过这个领域,仅在内部通过Solr的并发管理管理,但是当我搜索“002219”作为回报时,我得到:

"docs": [ 
    { 
     "person_street_t": [ 
      "<streetName>", 
     ], 
     "id": "123", 
     "person_abbr_t": [ 
      "<sb>" 
     ], 
     "person_name_t": [ 
      "<sb>" 
     ], 
     "person_city_t": [ 
      "<city>" 
     ], 
     "person_zipcode_s": "<zipcode>", 
     "type_s": "PERSON", 
     "person_house_number_s": "<hn>", 
     "_version_": 1494523490022195200 
          //****** <- matched by Solr 
    } 
] 

但我不希望Solr搜索该字段。 这是正常行为吗?难道我做错了什么?或者有没有其他方法可以在_version_字段中禁用搜索?

UPDATE:

好吧,我读了一下,发现这个领域(_text)是defaultSearchField。因此,我所做的现在更改默认:

<copyField source="*" dest="_text"/> 

到:

<copyField source="*_t" dest="_text"/> 
    <copyField source="*_s" dest="_text"/> 
    <copyField source="*_ts" dest="_text"/> 
    <copyField source="*_ss" dest="_text"/> 

这些都是我的索引的唯一字段类型(*是由我添加_TS)。它会足够吗?

+1

什么是默认搜索字段,其类型和类型定义?什么是您确切的查询网址? – arun 2015-03-02 19:57:04

+0

我没有设置任何默认搜索字段,所以它必须设置为Solr默认。我在工作中这样做,所以明天我可以提供更多细节。 P.S.感谢您的关注:) – misko321 2015-03-02 21:12:53

+0

您的搜索处理程序是如何配置的?你的solrconfig.xml中有一个。 – cheffe 2015-03-03 11:59:43

回答

1

如果您使用示例模式,你极有可能不得不copyField定义副本的一切到一个文本场(schema.xml中定义)并搜索(solrconfig.xml中定义)。

这对开发很有用,但一切只是作为文本搜索,可能不是你想要做的事情。

您可以调查切换到eDisMax之类的东西。或者,如果您还没有完全准备好,则可以将更严格的copyField规则定义为只汇总所需的字段。

+0

你说得对,我有:。但它是否需要?这是什么聚合领域用于?如果我只是删除它会不会好起来?所有的领域已经被索引为“自己的”,不是吗? – misko321 2015-03-04 06:46:46

+0

我用我的更改更新了问题。 – misko321 2015-03-04 08:27:08

+1

当前配置需要它,请在solrconfig.xml中查找** df **字段定义。 Solr为您提供了很多搜索方式的灵活性,目前您正在使用最简单的方式将所有东西网格化为一个字段进行搜索。最终,您会希望从eDismax迁移到类似的东西。阅读教程/参考指南了解更多信息。 – 2015-03-04 15:14:13