簡體   English   中英

Solr多值字段-相似構面字段

[英]Solr multivalued field - Similar facet field

背景,我正在對某些文檔進行一些關鍵短語提取。 在這里,我有一個要用作上載文檔的方面的術語列表( 我這樣做了 ),所以我有一個關於結腸癌的術語列表,並且出現了一個問題,該方面指出有10個文檔具有特定的一詞,但我得到400個文檔,其中10個實際上包含該詞,其他390個沒有。 我相信是因為該術語特別包含另一個術語。

我正在尋找的術語: no evidence還有另一個術語實際上出現了400次: no類似地,我正在尋找一個術語:在所有文檔中, free of一個出現1次,但我得到31個結果。 有一個free術語顯示了31次。

這是我的架構:

<field name="ColonCancer" type="ColonCancer" indexed="true" stored="true" multiValued="true"
   termPositions="true"
   termVectors="true"
   termOffsets="true"/>
<fieldType name="ColonCancer" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<filter class="solr.ShingleFilterFactory"
            minShingleSize="2" maxShingleSize="5"
            outputUnigramsIfNoShingles="true"
    />
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms_ColonCancer.txt" ignoreCase="true" expand="true" tokenizerFactory="solr.KeywordTokenizerFactory"/>
    <filter class="solr.KeepWordFilterFactory"
            words="prefLabels_ColonCancer.txt" ignoreCase="true"/>
  </analyzer>
</fieldType>

有沒有辦法讓它以我只能看到正確數量的方式運行(沒有證據顯示只有10個結果)。

編輯:這似乎給了我想要的東西:

http://localhost:8983/solr/Cytokine/tvrh?q=%22no%22%20OR%20%22no%20evidence%22&fq=ColonCancer:no&fq=ColonCancer:no%20evidence&tv=true&tv.offsets=true

您可以通過多種方式解決此問題。

您可以將字段更改為字符串字段。 這將使方面查詢行為變成“特定的”。 也就是說-尋找“沒有證據”只會發現“沒有證據”-區分大小寫。

另一種選擇是在查詢特定組合時使用構面查詢。 然后,您可以使用〜simbol在它們之間強制一個范圍。

例:

<field name="ColonCancer" type="ColonCancer" indexed="true" stored="true" multiValued="true"
termPositions="true"
termVectors="true"
termOffsets="true"/>

 <fieldType name="ColonCancerString" class="solr.StringField">

<analyzer>
 <filter class="solr.ShingleFilterFactory"
        minShingleSize="2" maxShingleSize="5"
        outputUnigramsIfNoShingles="true"
/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SynonymFilterFactory"     synonyms="synonyms_ColonCancer.txt" ignoreCase="true" expand="true"   tokenizerFactory="solr.KeywordTokenizerFactory"/>
     <filter class="solr.KeepWordFilterFactory"
        words="prefLabels_ColonCancer.txt" ignoreCase="true"/>
  </analyzer>
  </fieldType>
  <copyField source="ColonCancer" dest="ColonCancerString"/>

在這里,我添加了另一個名為ColonCancerString的字段,該字段應保留相同的文本-但作為字符串。

模式中的copyFIeld行告訴它復制字段值。

有關復制字段線程,請參見此處:

如何使用SOLR copyField指令

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM