在Hue和Solr中,动态字段都会导致问题 . 在Hue中,存储为动态字段的数据拒绝显示在默认的Solr搜索中,该搜索显示导入的集合中的所有可用数据 . 它也无法搜索text_general类型的数据并被索引和存储 . 在Solr中,似乎动态字段未编入索引,即使模式设置如下:
<dynamicField name="*_t" type="text_general" indexed="true" stored="true"/>
<dynamicField name="*_txt" type="text_general" indexed="true" stored="true" multiValued="true"/>
这些设置与正常字段“name”完全相同,后者是令牌可搜索的,并出现在Solue在Hue中搜索 .
<field name="name" type="text_general" indexed="true" stored="true"/>
我的目标是使用标记和属性名称作为索引中的字段名称,将索引的值 . 这在solr中工作,当我使用基本查询“start:star”时,我可以看到结果
"docs": [
{
"id": "5CCD1D4D-2D7D-4F6A-BD2B-FC9D8577493F",
"name": "43-02 43 AVENUE",
"borough_t": "QUEENS",
"community_board_t": "02 QUEENS",
"police_precinct_t": "Precinct 108",
"city_council_district_t": "26",
"created_date_t": "1305702000",
"status_t": "Closed",
"resolution_action_t": "Cleaning crew dispatched. Property cleaned.",
"closed_date_t": "1309244400",
"x_coordinate_t": "1006146",
"y_coordinate_t": "210783",
"_version_": 1450333101007831000
},
最后,_t末尾的所有内容都是动态字段值,而前面的名称是标记中的名称 . 但是,可以部分搜索的唯一字段是名称字段 . 如果我在查询中搜索"43",我会在"name"中获取此文档和其他文档 . 但是如果我从police_precinct_t字段搜索单词"Precinct",我的搜索什么也没有返回 . 所有这一切都在Solr管理窗口中通过转到 http://HOST:8983/solr.
在顺化,我甚至有更稀疏的信息 . 转到Solr Search面板并执行默认空白搜索将返回Solr db中所有数据的第一页 .
1450333101007831000 5CCD1D4D-2D7D-4F6A-BD2B-FC9D8577493F 43-02 43 AVENUE
1450333092014194700 7606462C-8657-4113-9427-5CEF30FB5483 Engine 53/Ladder 43
1450333092021534700 EEB939BD-DE52-467E-8EA3-91C7AF8E162A Engine 43/Ladder 59
1450333095903363000 0BEDA34C-ECCE-4405-A0DD-6D9994C51CE3 102-18 43 AVENUE
1450333095906508800 F7B6F181-C289-4F42-9ADC-36971ABE813A 102-28 43 AVENUE
1450333095907557400 C0F5286F-3216-4A0A-A4D0-F6038020122C 102-28 43 AVENUE
1450333095908606000 1C94DAFF-AB59-452B-A569-6CE4472867C7 102-36 43 AVENUE
1450333096052260900 9C6AF32C-06FA-46B2-8266-2BC8CF23CE79 104-20 43 AVENUE
第一个值是版本,第二个是id,下一个是我用来测试Hue中是否只显示已定义字段的名称值,这似乎就是这种情况 . 动态字段数据不符合声明的动态字段的预期行为或上面给出的's attributes that' . 我在sol1中给出了'm using the example schema.xml that' . 我've checked to make sure there aren't其他任何动态字段与glob "*_t"冲突,并在设置时否定或错误字段 .
Solr非常易于使用,并且通过一些阅读来理解,但我似乎无法找到为什么solr拒绝按预期工作的答案 . 我正在使用SolrJ将我的文件索引到Solr,然后我在Hue(2.5)中使用Solr Admin Panel和Solr Search来与索引数据进行交互 .
从NYC Open Data Site中提取的我的XML数据示例将无法正确格式化,但如果您将're really interested you can look up the Firehouse Location and Graffiti Location data and export the xml. That is the data I'放入Solr . 我可以看到的解决方案似乎是编写硬编码的解释代码,它使用text_general设置将每个标记值分配给一个精确的字段,或者动态创建字段,这与动态字段似乎没什么不同 . 我想知道如何让动态字段像我期望的那样工作 .
先感谢您 .
1 回答
您的问题是字段“名称”被复制到字段“text”(并且* _t not) . 如果未指定键名,则“text”被声明为要搜索的默认字段 . 因此,如果您执行此类操作q =要搜索的内容,它将搜索“text”字段(包括“name”) .
在默认的schema.xml中,您将找到这些说明 . (Solr 4.4和4.5)
stored =“false”是您在solr响应中看不到此字段值的原因 .
这里将名称复制到文本中
正如您在schema.xml中注释的这些行中所见,“text”声明为defaultSearch字段位于solrconfig.xml中
那么..让我们去solrconfig.xml然后..
如何解决您的问题?
在schema.xml中取消注释这一行..将所有“* _t”复制到“text” .
OBS:您需要在此更改后重新编制索引 .