Solr 6.5.1搜索顺序第一次完全匹配从左到右匹配

时间:2017-09-06 18:49:33

标签: solr lucene

我正在使用lucene进行索引并使用solr进行搜索并具有以下要求

示例:“测试五”

  1. 最高优先级 - 同时具有“测试”和“五”的词语
  2. 下一个 - 只剩下大部分单词“Test”的单词
  3. 下一个 - 列表中的下一个词 - “五个”(从左到右)等等
  4. 请找到我的架构

    <field name="name" type="text_general" indexed="true" stored="true"/>
    <field name="acSearch" type="searchFieldType" required="false" indexed="true" stored="false" multiValued="true" />
    <copyField source="name" dest="acSearch" />
    <fieldType name="searchFieldType" class="solr.TextField" positionIncrementGap="100">
            <analyzer type="index">
                <tokenizer class="solr.PatternTokenizerFactory" pattern="[,]+" />
                <filter class="solr.LowerCaseFilterFactory" />
                <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
            </analyzer>
            <analyzer type="query">
                <tokenizer class="solr.PatternTokenizerFactory" pattern="[,]+" />
                <filter class="solr.LowerCaseFilterFactory" />
    
            </analyzer></fieldType>
    

    solrconfig.xml中

     <requestHandler name="/select" class="solr.SearchHandler">
     <lst name="defaults">
      <str name="wt">json</str>
      <str name="indent">true</str>
      <str name="fl">name</str>
      <str name="rows">200</str>
      <str name="df">dySearch</str>
      <str name="sort">score desc</str>
    </lst>
    <arr name="components">
      <str>query</str>
    </arr>
    

    如果我搜索

    ,我没有得到正确的解决方案

    1.Test Five作为回应测试五是第一个接下来不是从左到右任何顺序数据即将到来

    1. 如果我搜索五个测试相关数据将首先出现。
    2. 请帮助你......

1 个答案:

答案 0 :(得分:1)

在构建查询字符串时,您可以对每个术语进行不同的提升:

 q=Test^10 Five^3 last^1

有了这个,你不需要弄乱ngram等,只使用一些标准的分析器