使用Apache Solr重视文档中的单词接近度而不是文字计数

时间:2015-06-01 13:29:10

标签: ruby-on-rails solr sunspot-solr

我正在开发rails应用程序,它基于Apache Solr搜索引擎,我们使用的是Sunspot gem。但是我遇到了一个问题,如果我搜索查询source of source,那么它会使用and结果给我数千个结果。但是我觉得在结果相关的第5个结果后,前5个结果并不相关。前5个结果只包含源字多次,但我的第6个结果包含精确查询i.e source of source所以我想重点说明包含我的查询文本的文档。我也尝试使用boost并且还提升了文档,但没有得到正确的结果。任何人都可以帮我找到一种方法来更加重视包含我的查询的文档,而不是包含更多词源的文档,来源?

我的schema.xml包含以下代码

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer>
    <tokenizer class="solr.PatternTokenizerFactory" pattern="[\s,\.;\(\)]+"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
<!-- *** This fieldType is generated for exact match boosting *** -->
<fieldType name="text_exact" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

任何帮助都是适当的

0 个答案:

没有答案