[
https://issues.apache.org/jira/browse/SOLR-11450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16197629#comment-16197629
]
Tim Allison commented on SOLR-11450:
------------------------------------
To confirm behavior at the Lucene level in 6.6.1, where "mapping.txt" contains:
{noformat}
"e" => "E"
"i" => "I"
"u" => "U"
"o" => "O"
{noformat}
{noformat}
@Test
public void testMultiterm() throws Exception {
Map<String, String> map = new HashMap<>();
map.put("mapping", "mapping.txt");
Analyzer ucVowelAnalyzer = CustomAnalyzer.builder()
.addCharFilter(MappingCharFilterFactory.class, map)
.withTokenizer("whitespace")
.build();
Directory rd = new RAMDirectory();
IndexWriter w = new IndexWriter(rd, newIndexWriterConfig(ucVowelAnalyzer));
Document doc = new Document();
doc.add(newTextField(defaultFieldName, "quick brown", Field.Store.YES));
w.addDocument(doc);
w.close();
IndexReader localReader = DirectoryReader.open(rd);
IndexSearcher localSearcher = newSearcher(localReader);
try {
assertHits(1, "quick", ucVowelAnalyzer, localSearcher);
assertHits(0, "quik~1", ucVowelAnalyzer, localSearcher);
assertHits(0, "quick*", ucVowelAnalyzer, localSearcher);
assertHits(0, "qui*k", ucVowelAnalyzer, localSearcher);
assertHits(0, "[quicj TO quicl]", ucVowelAnalyzer, localSearcher);
assertHits(1, "\"quick brown\"", ucVowelAnalyzer, localSearcher);
assertHits(0, "\"quik~1 brown\"", ucVowelAnalyzer, localSearcher);
assertHits(0, "\"quick* brown\"", ucVowelAnalyzer, localSearcher);
assertHits(0, "\"qui*k brown\"", ucVowelAnalyzer, localSearcher);
assertHits(0, "\"[quicj TO quicl] brown\"", ucVowelAnalyzer,
localSearcher);
} finally {
localReader.close();
rd.close();
}
}
public Query getQuery(String qString, Analyzer analyzer) throws Exception {
QueryParser qp = new ComplexPhraseQueryParser(defaultFieldName, analyzer);
return qp.parse(qString);
}
private void assertHits(int expectedDocHits, String queryString, Analyzer
analyzer, IndexSearcher searcher) throws Exception {
Query q = getQuery(queryString, analyzer);
System.out.println(q + " : "+q.getClass());
TopDocs topDocs = searcher.search(q, expectedDocHits+10);
assertEquals(queryString, expectedDocHits, topDocs.scoreDocs.length);
}
{noformat}
whereas in 7.0.1, all tests pass:
{noformat}
@Test
public void testMultiterm() throws Exception {
Map<String, String> map = new HashMap<>();
map.put("mapping", "mapping.txt");
Analyzer ucVowelAnalyzer = CustomAnalyzer.builder()
.addCharFilter(MappingCharFilterFactory.class, map)
.withTokenizer("whitespace")
.build();
Directory rd = new RAMDirectory();
IndexWriter w = new IndexWriter(rd, newIndexWriterConfig(ucVowelAnalyzer));
Document doc = new Document();
doc.add(newTextField(defaultFieldName, "quick brown", Field.Store.YES));
w.addDocument(doc);
w.close();
IndexReader localReader = DirectoryReader.open(rd);
IndexSearcher localSearcher = newSearcher(localReader);
try {
assertHits(1, "quick", ucVowelAnalyzer, localSearcher);
assertHits(1, "quik~1", ucVowelAnalyzer, localSearcher);
assertHits(1, "quick*", ucVowelAnalyzer, localSearcher);
assertHits(1, "qui*k", ucVowelAnalyzer, localSearcher);
assertHits(1, "[quicj TO quicl]", ucVowelAnalyzer, localSearcher);
assertHits(1, "\"quick brown\"", ucVowelAnalyzer, localSearcher);
assertHits(1, "\"quik~1 brown\"", ucVowelAnalyzer, localSearcher);
assertHits(1, "\"quick* brown\"", ucVowelAnalyzer, localSearcher);
assertHits(1, "\"qui*k brown\"", ucVowelAnalyzer, localSearcher);
assertHits(1, "\"[quicj TO quicl] brown\"", ucVowelAnalyzer,
localSearcher);
} finally {
localReader.close();
rd.close();
}
}
{noformat}
> ComplexPhraseQParserPlugin not running charfilter in 6.x
> ---------------------------------------------------------
>
> Key: SOLR-11450
> URL: https://issues.apache.org/jira/browse/SOLR-11450
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Affects Versions: 6.6.1
> Reporter: Tim Allison
> Priority: Minor
> Attachments: SOLR-11450-unit-test.patch
>
>
> On the user list, Bjarke Buur Mortensen reported that the charfilter is not
> being applied in the ComplexPhraseQParserPlugin in 6.x. Bjarke fixed my
> proposed unit tests to prove this failure. All appears to work in 7.x and
> trunk.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]