Solr:计算单词出现在不在文档中的行中的次数

时间:2015-07-14 20:26:08

标签: solr facet

示例:我从数据库中获取数据,行如下所示 ID年龄文本

1 10 Great good very good
2 12 Thanks very thanks good very good

我想从结果中得到的是ID的好处

q:good
Facet.query:good
facet.field: ID

结果应如下所示

"facet_counts": {
     "facet_queries": {
     "text:good": 4
},
"facet_fields": {
   "ID": [
      "1",2,
      "2",2,
   }
}

我得到的是

"facet_fields": {
    "ID": [
       "1",1,
       "2",1,
    }
}

看起来要删除行中的重复值吗?

有人可以帮忙吗

Schema.xml的

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>

                                                        

1 个答案:

答案 0 :(得分:0)

不会删除重复的值。

您正在获得字段ID的方面。根据您的查询,只有一个文档,每个文档都包含ID=1ID=2,这就是您获得结果的原因 “facet_fields”:

{ 
   "ID": 
        { "1",1, 
          "2",1,
        } 
}

您的问题标题以及您在问题中解释的内容有点令人困惑。

这行是solr索引中的单个文档吗? 1 10 Great good very good 2 12 Thanks very thanks good very good

或者这些是两个不同的文件: 文件1

{
  ID:1
  Age:10
  Text:Great good very good    
}

文件2

{
  ID:2
  Age:12
  Text:Thanks very thanks good very good
}

solr中没有内置的方法可以返回您期望的结果。即返回每个文档中的单词计数。 最接近的是术语向量组件:https://cwiki.apache.org/confluence/display/solr/The+Term+Vector+Component