Solr:如何突出整个搜索短语?

Geo*_*rou 3 solr

一个 我需要执行词组搜索.在搜索结果中,我得到了确切的短语匹配,但看着突出显示的部分,我看到短语是标记化的,即这是我在搜索"第1天"时得到的结果:

<arr name="post">
  <str><em>Day</em> <em>1</em>   We have begun a new adventure! An early morning (4:30 a.m.) has found me meeting with</str>
</arr>
Run Code Online (Sandbox Code Playgroud)

这是我想要收到的结果:

    <arr name="post">
  <str><em>Day 1</em>   We have begun a new adventure! An early morning (4:30 a.m.) has found me meeting with</str>
</arr>
Run Code Online (Sandbox Code Playgroud)

我正在做的查询是这样的: 管理控制台:

q = day 1 
fq = post:"day 1" OR title:"day 1"
hl = true
hl.fl =title,post
Run Code Online (Sandbox Code Playgroud)

选择Q =天+ 1&FQ =张贴%3A%22天+ 1%22 + OR +标题%3A%22天+ 1%22重量= XML&缩进=真HL =真hl.fl =标题%2Cpost&hl.simple.pre =%3Cem%3E&HL .simple.post =%3C%2Fem%3E

Theese是我的领域:

     <field name="post" type="text_general" indexed="true" stored="true" required="true" multiValued="false" />
      <field name="post" type="text_general" indexed="true" stored="true" required="true" multiValued="false" />
Run Code Online (Sandbox Code Playgroud)

这是我的fied类型text_general的solr架构部分:

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />

    <!-- in this example, we will only use synonyms at query time
    <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
    -->
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.GreekStemFilterFactory"/>
    <filter class="solr.GreekLowerCaseFilterFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>
Run Code Online (Sandbox Code Playgroud)

B)我可以在高亮部分看到更令人不安的结果,即突出显示不是预期的整个单词,而是单个片段:.where you get to see all of Athens ... <em>Day</em> 2 - Carmens 我不想在突出显示的部分中看到这个结果(只需要看到两个单词"第1天").有任何想法吗 ?

我正在阅读Solr高亮部分但是......真的......甚至没有一个例子!

Geo*_*rou 6

需要插入的参数hl.q基本上意味着"我想要突出显示这个短语",并且hl.usePhraseHighlighter = true和hl.useFastVectorHighlighter = true

所以通过添加到我的原始查询:&hl.q="Day+1"&hl.usePhraseHighlighter=true&hl.useFastVectorHighlighter=true工作.

对于B)我改变fq = post:"day 1" OR title:"day 1"fq = post:"day 1".我知道后者不是我所需要的,因为它是无效的.

使用的fastVectorHighliter配置:

   <field name="post" type="text_general" indexed="true" stored="true" required="true" multiValued="false"  termVectors="true" termPositions="true" termOffsets="true"/>
Run Code Online (Sandbox Code Playgroud)