[英]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行告訴它復制字段值。
有關復制字段線程,請參見此處:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.