[ 
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]

Reply via email to