Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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

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
Search 精确词搜索_Search_Solr - Fatal编程技术网

Search 精确词搜索

Search 精确词搜索,search,solr,Search,Solr,我想配置我的Solr搜索引擎,以便获得与我输入的搜索词的精确匹配 例如,“税”应返回带有“税”而不是“税”、“税”等的文件 任何帮助或提示都将不胜感激。关闭。我假定您的字段是文本字段,默认情况下solr对该字段进行模糊搜索。您想要的是将您的字段设置为字符串字段,并且不添加任何标记器,然后您将获得精确匹配 您甚至可以将精确搜索与模糊搜索相结合,并使用Demax提高相对权重 示例(schema.xml): 示例(solrconfig.xml): 沮丧 名称字符串^10.0名称^5.0说明^1.

我想配置我的Solr搜索引擎,以便获得与我输入的搜索词的精确匹配

例如,“税”应返回带有“税”而不是“税”、“税”等的文件


任何帮助或提示都将不胜感激。

关闭。

我假定您的字段是文本字段,默认情况下solr对该字段进行模糊搜索。您想要的是将您的字段设置为字符串字段,并且不添加任何标记器,然后您将获得精确匹配

您甚至可以将精确搜索与模糊搜索相结合,并使用Demax提高相对权重

示例(schema.xml):


示例(solrconfig.xml):


沮丧
名称字符串^10.0名称^5.0说明^1.0
0.1

要关闭schema.xml中的词干分析,可以如下定义文本字段:

<types>

   <!-- other fields definition -->

   <fieldType name="text_no_stem" class="solr.TextField" omitNorms="false">
      <analyzer>
          <tokenizer class="solr.StandardTokenizerFactory"/>
          <filter class="solr.StandardFilterFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
   </fieldType>

   <!-- other fields definition -->

</types>

<fields>

   <!-- other fields definition -->

   <dynamicField name="*_nostem" type="text_no_stem" indexed="true" stored="true"/>

   <!-- other fields definition -->

</fields>
searchable do
    text(:wants, as: :wants_nostem)
end

使用solr字符串字段,该字段将执行精确的值搜索,例如

<fieldType class="solr.StrField" name="string" omitNorms="true" sortMissingLast="true" />

使用引号表示精确匹配结果:

例如:

核心名称:core1 关键字:名称字符串


:“taxes”&wt=json&indent=true

谢谢Hank,也许我应该更恰当地表达我的问题,如何禁用词干?:)请看,有时重新编制索引可能会很痛苦,尤其是在大数据上花费很长时间的情况下。有没有其他方法可以代替关闭词干分析?在查询时使用特殊运算符可以这样做吗?像=taxes@mlissner,上面的XML只是添加到查询中的默认参数。您可以通过在查询中添加defType=demax&qa=nameString^10.0 name^5.0 description^1.0等来完成此操作etc@ItayMoav,目标是让用户能够放置精确的匹配查询。是的,我理解你的意思。如果你知道你可以将这些参数添加到查询中,你可以在上面放置一个UI来生成查询。。。
searchable do
    text(:wants, as: :wants_nostem)
end
<fieldType class="solr.StrField" name="string" omitNorms="true" sortMissingLast="true" />