Solrj查询 - 第一个获得最相关的记录(Solrj Query - Get the most r

2019-07-18 19:53发布

我有一些文件Solr 4.0 。 我想首先显示,然后不太相关的人最相关的记录。

对于例如,我有一个题目如下3个文件 -

  1. 迈向收入分配政策
  2. 收入分配与经济政策
  3. 发展中国家的收入分配政策

现在,当我查询像q=title:Income Distribution Policy

我想文件号3至第一显示(作为第一3个字是完全匹配),那么我想要的文件号1至第二显示(如除了“朝”剩余匹配),那么我所需的文档数2现身(因为有一些单词之间)。

我的schema.xml看起来是这样的-

<types>
  <fieldType name="search" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="German2" />
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.SnowballPorterFilterFactory" language="German2" />
    <filter class="solr.PorterStemFilterFactory"/>
  </analyzer>
</fieldType>
</types>

<fields>
   <field name="title" type="search" indexed="true" stored="true"/>
</fields>

编辑1调试输出

"rawquerystring": "title:Income Distribution Policy",
"querystring": "title:Income Distribution Policy",
"parsedquery": "title:incom title:distribut title:polici",
"parsedquery_toString": "title:incom title:distribut title:polici"

编辑2改性的字段类型

我用下面的组合,还是输出是一样的。

  1. StandardTokenizerFactory - autoGeneratePhraseQueries(不存在) - PorterStemFilterFactory。
  2. StandardTokenizerFactory - autoGeneratePhraseQueries = “真” - PorterStemFilterFactory。
  3. StandardTokenizerFactory - autoGeneratePhraseQueries(不存在)。
  4. StandardTokenizerFactory - autoGeneratePhraseQueries = “真”。
  5. WhitespaceTokenizerFactory - autoGeneratePhraseQueries(不存在) - PorterStemFilterFactory。
  6. WhitespaceTokenizerFactory - autoGeneratePhraseQueries = “真” - PorterStemFilterFactory。
  7. WhitespaceTokenizerFactory - autoGeneratePhraseQueries(不存在)。
  8. WhitespaceTokenizerFactory - autoGeneratePhraseQueries = “真”。

Answer 1:

如果不通过别的排序,你是相似/相关性排序。 所以,如果你没有得到正确的顺序结果,你可能需要与你是如何分配的权重,你所使用的解析器查询玩。

我假设你正在使用eDismax与标题领域的提升。 另外有提升看看毫米 (最小匹配)和PF(短语字段)。

您可能还需要与你的字段类型autoGeneratePhraseQueries字段设置为测试。

而且,当然,debugQuery =在查询真正会帮助你看看是怎么回事。 你可能会发现,还加入debug.explain.structured =真能有用的第一对夫妇的您正试图读取调试输出时间。



Answer 2:

我试着用""周围的查询字符串和它的工作。

像- q=title:"Income Distribution Policy" OR title:Income Distribution Policy

这给我的输出文件1,则文件3,然后记录2并不完美,但足够接近。



文章来源: Solrj Query - Get the most relevant record first