在 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"/>
这些设置与常规字段“名称”完全相同,该字段可进行令牌搜索并出现在 Hue 中的 Solr 搜索中。
<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”,我将得到这个和其他“名称”中有 43 的文档。但是,如果我从 Police_precinct_t 字段中搜索单词“Precinct”,我的搜索将不会返回任何内容。所有这些都在 Solr 管理窗口中,通过转到http://HOST:8983/solr.
在顺化,我的信息更稀少。转到 Solr 搜索面板并执行默认的空白搜索会返回 Solr 数据库中所有数据的第一页。
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中是否只有定义的字段的名称值,这似乎是这种情况。动态字段数据甚至不会像在 Solr 管理面板中那样显示在 Hue 中,但我可以像在 Solr 查询窗口中那样搜索数据。如果我输入“borough_t:QUEENS”,我会在 Hue 和 Solr Query 中获得该确切字段和值匹配的所有结果。这不允许进行令牌匹配,并且与声明的动态字段的预期行为或其上面给出的属性不匹配。我正在使用集合 1 中 Solr 提供的示例 schema.xml。我已检查以确保没有任何其他动态字段与 glob "*_t" 发生冲突并在该字段时否定或出错
Solr 使用起来非常简单,并且通过一些阅读可以理解,但我似乎无法找到为什么 solr 拒绝按预期工作的答案。我正在使用 SolrJ 将我的文件索引到 Solr,然后我在 Hue (2.5) 中使用 Solr 管理面板和 Solr Search 与索引数据进行交互。
我从NYC Open Data Site提取的 XML 数据示例将无法正确格式化,但如果您真的感兴趣,可以查找 Firehouse Location 和 Graffiti Location 数据并导出 xml。这就是我要放入 Solr 的数据。我可以看到的解决方案似乎是编写硬编码解释代码,将每个标签值分配给具有 text_general 设置的确切字段,或者动态创建字段,这与动态字段似乎没有太大区别。我很想弄清楚如何让动态字段按我的预期工作。
先感谢您。