一个 我需要执行词组搜索.在搜索结果中,我得到了确切的短语匹配,但看着突出显示的部分,我看到短语是标记化的,即这是我在搜索"第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高亮部分但是......真的......甚至没有一个例子!
需要插入的参数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)