Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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/opencv/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
Xml 搜索时为solr中的原始名称提供备选名称_Xml_Solr_Indexing - Fatal编程技术网

Xml 搜索时为solr中的原始名称提供备选名称

Xml 搜索时为solr中的原始名称提供备选名称,xml,solr,indexing,Xml,Solr,Indexing,我有100份这样的文件 <doc> <field name="id">9</field> <field name="riskId">4</field> <field name="riskType">legal</field> <field name="riskValue">3</field> <field name="product">Router CTP133</fie

我有100份这样的文件

<doc>
<field name="id">9</field>
<field name="riskId">4</field>
<field name="riskType">legal</field>
<field name="riskValue">3</field>
<field name="product">Router CTP133</field>
<field name="facility">plant</field>
<field name="location">Busan, korea</field>
</doc>

9
4.
合法的
3.
路由器CTP133
植物
韩国釜山
目前,如果我搜索路由器(“//XYZ:8983/solr/collection1/select?q=Router”),如果“产品”字段中有“路由器”这个词,我就会得到结果。但我想用其他方式进行查询,比如……如果我搜索RT(//XYZ:8983/solr/collection1/select?q=RT),我应该会得到相同的结果

请帮帮我。我有这个要求要做???

我猜(如果我错了,请告诉我),您的
产品
字段被索引为
type=“text”
字段。如果是这样的话,您手头就有一个很好的解决方案。您对文本字段类型的分析(在
schema.xml
中配置)对于索引和查询时间分析,应包括此行:

<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
当您提供值“Router CTP133”作为产品名称时,它实际上将被索引为“rt ctp 133”。(注意,我假设您配置了其他公共文本字段筛选。)当有人搜索“rt”时,它将匹配此修改后的产品名称。如果有人搜索“Router”,同义词过滤器工厂将再次介入并修改搜索。而不是“路由器”,实际应用的搜索将是“rt”。所以不管怎样它都会匹配


如果您对
synonyms.txt
文件和
schema.xml
文件进行了必要的更改(如果尚未激活同义词筛选),您应该能够重新索引文档以获得所需的行为。

Thanks,我知道了,但这个答案需要稍加更正。不要写“router=>rt”,而是写“rt=>router”。如果在查询和索引时都应用这两个命令,那么这两个命令应该具有相同的效果。使用
rt=>router
,只要缩写“rt”没有出现在任何实际的产品记录中,您就可以仅在查询时应用过滤器。我按照您所说的方式重试了。但它不起作用。也许我在什么地方出错了。不管怎样,我满足了我的要求。@frances:你能看看这个吗。我还有一个
router => rt