在Elasticsearch

时间:2016-02-03 12:47:26

标签: elasticsearch

我们正试图使用​​Elasticsearch为大量书籍(大约100.000.000个单词)编制索引。以前每个单词都有一个ID,这里用HTML表示:

<span class="w" id="lb441882_1235">A</span> 
<span class="w" id="lb441882_1237">cold</span> 
<span class="w" id="lb441882_1239">morning</span> 

我们需要在搜索语料库时检索这些ID。 到目前为止我们有什么:

  1. 我们使用定界有效载荷过滤器:

    {
        "type" : "delimited_payload_filter",
        "encoding" : "identity",
        "delimiter" : "|"
    }
    

    将文字存储为token|ID,例如A|lb441882_1235 cold|lb441882_1237 morning|lb441882_1239

  2. 将有效负载返回到突出显示搜索结果中的<em>标记内,然后手动拆分|。

    'highlight': {'text': ['A|lb441882_1235 <em>cold|lb441882_1237</em> morning|lb441882_1239']}
    
  3. 由于需要手动清洁,这看起来很麻烦,但我们还没有找到更整洁的解决方案。

    问题:

    Q1。有没有更好的方法来对有效负载文本运行查询,该结果会在其自己的字段中提供有效负载数据?理想情况下,hightlight会提供偏移索引和有效负载数据,而不是输出html标记,理想情况某些看起来更像_termvectors的数据(在此示例中):

    {
        "highlight": [
            {
                "hit" : "cold",
                "position" : 1,
                "start_offset" : 2,
                "end_offset" : 6,
                "payload" : "lb441882_1237"
            }
        ]
    }
    

    有没有这样的东西?

    Q2。有效载荷是否是实现此目的的最佳方式,还是我们应该更加关注自定义分析仪?我们已经查看了本文链接的插件,但无法安装它: https://discuss.elastic.co/t/can-elastic-run-complex-search-using-annotated-tokens/29630/6

0 个答案:

没有答案