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