我创建了一个核心{"id" : "11","resid" : 384,"title" : "perl and java developer","name" : "appnede new name","cat" : "22,11","role" : "new role","exp" : 1 }
考虑一个示例数据:title:perl
。
当我搜索title:"perl and java developer"
时,我得到0结果。只有当我搜索title:perl*
或<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">2</int>
<lst name="params">
<str name="indent">true</str>
<str name="q">title:perl*</str>
<str name="_">1444371225114</str>
<str name="wt">xml</str>
</lst>
</lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="id">11</str>
<arr name="resid">
<long>384</long>
</arr>
<arr name="title">
<str>perl and java developer</str>
</arr>
<arr name="name">
<str>appnede new name</str>
</arr>
<arr name="cat">
<long>2211</long>
</arr>
<arr name="role">
<str>new role</str>
</arr>
<arr name="exp">
<long>1</long>
</arr>
<long name="_version_">1514531870450122752</long></doc>
</result>
</response>
时,才会提到结果。
响应:
<arr name="role"><str>new role</str></arr>
另外,为什么响应在arr <str name="role">new role</str>
?我想在var properties = typeof(Device).GetProperties().Where(prop => prop.PropertyType == query.GetType());
中使用其他文件也是如此。怎么做?我使用的是solr 5.3.0。
答案 0 :(得分:1)
我认为您已将字段定义为字符串而不是文本。字符串字段完全匹配,而文本字段可以获得您要查找的结果。
答案 1 :(得分:0)
解决了以上问题。我已将字段类型更改为text_general_new
,这是一个类似于text_general
的新字段类型,并进行了一些自定义。
或者,您可以将text_general
与multiValued="false"
一起使用。这些更改需要在managed-schema
文件中完成。这是solr使用的隐式模式文件。
但作为初学者,我在这里还有一个疑问。 Solr隐式使用managed-schema作为schema.xml的替代,但是从哪里了解JSON文件中的字段?我的意思是,它已经为我的JSON中的每个字段定义了字段。怎么知道的?哪个文件(带位置)对此负责?