A 我需要执行短语搜索。在搜索结果中,我得到了完全匹配的短语,但查看突出显示的部分,我发现该短语被标记化,即这就是我搜索“第 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>

这就是我希望收到的结果:
    <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>

我正在做的查询是这样的:
管理控制台:
q = day 1
fq = post:"day 1" OR title:"day 1"
hl = true
hl.fl =title,post

select?q=day+1&fq=post%3A%22day+1%22+OR+title%3A%22day+1%22&wt=xml&indent=true&hl=true&hl.fl=title%2Cpost&hl.simple.pre=%3Cem%3E&hl .simple.post=%3C%2Fem%3E

这些是我的领域:
     <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" />

这是我的 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>

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

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

最佳答案

需要插入的参数是 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"/>

关于Solr:如何仅突出显示整个搜索词组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25930180/

10-12 05:29