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_Lucene_Synonym - Fatal编程技术网

Solr 使用同义词的错误行为

Solr 使用同义词的错误行为,solr,lucene,synonym,Solr,Lucene,Synonym,我在使用同义词(Lucene 4.6.1)时遇到问题。这些是我的配置文件和测试用例 同义词过滤器工厂配置。 Map<String,String> initialParams = Maps.newHashMap(); initialParams.put("synonyms","synonym.txt"); initialParams.put("ignoreCase","true"); initialParams.put("expand","true"); initialParams.p

我在使用同义词(Lucene 4.6.1)时遇到问题。这些是我的配置文件和测试用例

同义词过滤器工厂配置。

Map<String,String> initialParams = Maps.newHashMap();
initialParams.put("synonyms","synonym.txt");
initialParams.put("ignoreCase","true");
initialParams.put("expand","true");
initialParams.put("format","solr");
initialParams.put("luceneMatchVersion",Version.LUCENE_40.toString());

SynonymFilterFactory synonymFilterFactory = new SynonymFilterFactory(initialParams);
文本的测试用例#1

Text #1: The american League is on fire.
//阳性病例(全部工作正常)

//阴性案例(工作罚款)

//不起作用

Assert.assertFalse(LuceneUtil.evaluate(t1, "\"al capone\""));
虽然我试图创建一个短语查询“al-capone”,但lucene似乎是在用两个术语al或capone进行查询

但同义词列表并没有出现,因为“卡西厄斯·克莱”和“卡西厄斯·其他词”并不匹配

文本的测试用例#2 //工作

Text #2: Muhammad ali is the best
Assert.assertFalse(LuceneUtil.evaluate(t2, "\"Cassius other words\""));

有什么想法吗

LuceneUtil.evaluate是做什么的?它只创建查询解析器并执行搜索。索引和解析器都使用相同的分析器。返回memoryIndex.search(parser.parse(escapedKeywords))>0.0f
Assert.assertFalse(LuceneUtil.evaluate(t1, "a.l.s"));
Assert.assertFalse(LuceneUtil.evaluate(t1, "a/l/s"));
Assert.assertFalse(LuceneUtil.evaluate(t1, "\"al capone\""));
Text #2: Muhammad ali is the best
Assert.assertFalse(LuceneUtil.evaluate(t2, "\"Cassius other words\""));