Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Solr索引和查询包含-的文本_Solr - Fatal编程技术网

Solr索引和查询包含-的文本

Solr索引和查询包含-的文本,solr,Solr,Solr新手,已经让它运行并导入了一些示例数据,在配置模式以使其按需要的方式工作时遇到问题。 我真正想做的就是索引一个字符串字段,并能够使用begins with搜索它。因此,例如,如果字段A与Car 1、Carrot、Car-3、Castle、Cars、Car2、Car3等重新创建,那么当我进入Car时,我希望所有返回顺序都是由Car第一个完整单词Car匹配最多的人返回,例如:Car 1在Carrot和Cars之前,然后是带有数字/破折号的人,基本上是字母数字排序 我将如何配置这样的filed

Solr新手,已经让它运行并导入了一些示例数据,在配置模式以使其按需要的方式工作时遇到问题。 我真正想做的就是索引一个字符串字段,并能够使用begins with搜索它。因此,例如,如果字段A与Car 1、Carrot、Car-3、Castle、Cars、Car2、Car3等重新创建,那么当我进入Car时,我希望所有返回顺序都是由Car第一个完整单词Car匹配最多的人返回,例如:Car 1在Carrot和Cars之前,然后是带有数字/破折号的人,基本上是字母数字排序

我将如何配置这样的fileds索引/分析器属性来实现这一点? 使用当前配置,我可以搜索,但结果不会返回alhanumeric,我无法搜索符号-

该字段应该像上面的示例一样处理包含空格和破折号的值

这是我当前根据一些信息对该字段的配置:

<!-- A text field that only splits on whitespace for exact matching of words -->
    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
    </fieldType>

    <!-- A text type for English text where stopwords and synonyms are managed using the REST API -->
    <fieldType name="managed_en" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.ManagedStopFilterFactory" managed="english" />
        <filter class="solr.ManagedSynonymFilterFactory" managed="english" />
      </analyzer>
    </fieldType>

感谢您的帮助

默认情况下,结果由分数返回,分数是使用一系列不同的因素计算的。如果需要简单的字母数字排序,请将&sort=sort\u字段名添加到查询中

请注意,您不希望按文本字段进行排序文本和托管文本在您的示例中是生成多个标记的文本字段,因此空格标记器和标准标记器不适用于排序字段,如果您需要链中的分析器或过滤器,请改为使用关键字标记器。如果您不需要对字段执行任何操作,如小写等,请改用StrField,因为它是逐字存储的

我猜下一个问题是但是。。那么我是否需要提交两次数据?因此,不需要,在模式中使用copyField发送进入文本的值,以便对fieldname进行排序,并为该字段应用不同的类型/分析器链。在Lucene和扩展Solr中,可以添加具有不同链的字段来解决特定问题。排序就是这样一个问题,它有助于进行与实际搜索不同的操作