Solr - 将术语添加到构面

时间:2015-10-21 14:47:31

标签: solr lucene

如何在solr中为facet添加术语?我想通过术语和同义词列表来索引一些文档。

我有包含我希望能够使用的术语的文本文档  搜索。

例如,本文档包含以下术语:

干扰素,细胞因子,MEC

我想要这些术语(或者如果术语是术语列表中术语的同义词,首选术语[不是同义词])显示在我正在索引的术语的构面列表中。

  
      
  1. J Interferon Cytokine Res。 2015年9月25日[提前印刷]
  2.         

    高葡萄糖增加炎症细胞因子基因的表达   在巨噬细胞中通过H3K9甲基转移酶机制。

         

    Li MF(1),Zhang R(1),Li TT(1),Chen MY(1),Li LX(1),Lu JX(1),Jia   WP(1)。

         

    作者信息:(1)内分泌与代谢科,   上海交通大学附属第六人民医院   上海市糖尿病研究所,上海市糖尿病临床中心,   上海市重点实验室上海市糖尿病重点实验室   中国上海代谢病中心。

         

    最近的研究表明,组蛋白修饰是其中之一   调节炎症细胞因子基因表达的机制   高血糖症状。然而,组蛋白仍然未知   甲基化被启动并参与炎症的变化   高葡萄糖(HG)条件下的细胞因子基因表达。我们的目标   是为了研究H3K9甲基化是否参与HG诱导的细胞凋亡   巨噬细胞中炎性细胞因子的表达。表达   THP-1衍生的高血糖症细胞因子基因谱   巨噬细胞由人细胞因子抗体阵列确定。基于   人类细胞因子抗体阵列分析的结果,   H3K9me3水平的4种炎性细胞因子基因,包括   白细胞介素-6(IL-6),IL-12p40,巨噬细胞炎症蛋白-1α   通过ChIP测定法测定(MIP-1α)和HG下的MIP-1β。   此外,这4种炎性细胞因子基因的表达   在HG或chaetocin(SUV39H1的抑制剂)下   甲基转移酶)暴露或过表达SUV39H1(a   通过定量分析H3K9me3特异性甲基转移酶   聚合酶链反应。在HG条件下培养的巨噬细胞   显示基因表达增加和H3K9me3水平降低   炎性细胞因子基因与孵育的巨噬细胞相比较   正常葡萄糖(NG)培养。用chaetocin抑制SUV39H1   NG处理的巨噬细胞也增加了IL-6的表达,   IL-12p40,MIP-1α和MIP-1β。此外,抑制SUV39H1与   HG处理的巨噬细胞中的chaetocin进一步增加了表达   这些炎性细胞因子。相反,NG治疗的巨噬细胞   用SUV39H1转染的质粒显示出降低的表达   炎性细胞因子。此外,过度表达SUV39H1   HG处理的巨噬细胞减轻炎症的表达   HG条件下的细胞因子。最后,HG也增加了   炎症细胞因子在小鼠骨髓来源的表达   巨噬细胞。我们的数据表明HG增加了表达   巨噬细胞中的炎性细胞因子通过减少H3K9me3   水平,部分由SUV39H1介导。失调   表观遗传组蛋白修饰可能是潜在的基因之一   HG诱导炎症细胞因子表达的机制   巨噬细胞。

         

    PMID:26406561 [PubMed - 由出版商提供]

编辑:

我尝试了所建议的内容:

but only got this:
"id":"9cae6e2f-bd81-4c72-b2a8-fd8184af603d",
        "_version_":1515690847909183488},
      {
        "content":["The CHO airport is at 38.1384683,-78.4527887.\nSee also: http://www.lat-long.com/Latitude-Longitude-1480221-Virginia-Charlottesville_Albemarle_Airport.html"],
        "title":["Test1"],
        "id":"cdf82556-7545-4d81-a7a5-83bb4f14e4b7",
        "_version_":1515776762744668160}]
  },
  "facet_counts":{
    "facet_queries":{},
    "facet_fields":{
      "key_phrases":[]},
    "facet_dates":{},
    "facet_ranges":{},
    "facet_intervals":{},
    "facet_heatmaps":{}}}

这是我的查询

http://localhost:8983/solr/Cytokine/query?q=*:*&facet=on&facet.field=key_phrases

EDIT2: 当我在solr admin中查看分析页面时,我可以看到它分解了空白过滤器和shingle过滤器中的数据,但在keepword过滤器中没有任何内容。 screenshot

编辑3:让它发挥作用!这是我的架构:

<field name="key_phrases" type="key_phrases" indexed="true" stored="false" multiValued="true"/>
<fieldType name="key_phrases" class="solr.TextField" >
<analyzer>
<filter class="solr.ShingleFilterFactory"
            minShingleSize="2" maxShingleSize="3"
            outputUnigramsIfNoShingles="true"
    />
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.KeywordTokenizerFactory"/>
    <filter class="solr.KeepWordFilterFactory"
            words="keep_phrases.txt" ignoreCase="true"/>
  </analyzer>
</fieldType>
<copyField source="content" dest="key_phrases"/>

这是我的同义词:

cytokine, CXCL10, cxcl10, CYTOKINE IP 10 PROTEIN, INTERFERON-INDUCIBLE PROTEIN 10

以下是我的保留词:

endocrinology
cytokine
histone

PS:如果您发现复制字段不起作用,则需要删除solr/server/solr/[CORE NAME]/data中的数据文件夹。然后重新启动它会起作用。

1 个答案:

答案 0 :(得分:1)

这是自然语言处理领域关注的问题之一(NLP),并且有大量的库可以为大多数语言执行不同类型的NLP。

然而,有一些小的黑客可以直接在Solr中执行“poor man's entity extraction”。对于您的情况,本文中的第二个示例将是一个可能的解决方案:

<field name="key_phrases" type="key_phrases" indexed="true" stored="false" multiValued="true"/>
<copyField source="content" dest="key_phrases"/>
<fieldType name="key_phrases" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.ShingleFilterFactory"
            minShingleSize="2" maxShingleSize="5"
            outputUnigramsIfNoShingles="true"
    />
    <filter class="solr.KeepWordFilterFactory"
            words="keep_phrases.txt" ignoreCase="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

..其中keep_phrases.txt包含类似的内容:

airport 
restaurant
toy store

(或您的情况下,干扰素,细胞因子,MEC)。 maxShingleSize应该与单个短语中最大数量的单词一样大。

对于处理同义词,使用常规同义词过滤器应该没问题。

相关问题