Return-Path: Delivered-To: apmail-lucene-java-dev-archive@www.apache.org Received: (qmail 56302 invoked from network); 28 Apr 2009 18:50:53 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 28 Apr 2009 18:50:53 -0000 Received: (qmail 25384 invoked by uid 500); 28 Apr 2009 18:50:52 -0000 Delivered-To: apmail-lucene-java-dev-archive@lucene.apache.org Received: (qmail 25311 invoked by uid 500); 28 Apr 2009 18:50:51 -0000 Mailing-List: contact java-dev-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: java-dev@lucene.apache.org Delivered-To: mailing list java-dev@lucene.apache.org Received: (qmail 25303 invoked by uid 99); 28 Apr 2009 18:50:51 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Apr 2009 18:50:51 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 28 Apr 2009 18:50:51 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 7C635234C04B for ; Tue, 28 Apr 2009 11:50:30 -0700 (PDT) Message-ID: <1376755635.1240944630508.JavaMail.jira@brutus> Date: Tue, 28 Apr 2009 11:50:30 -0700 (PDT) From: "Earwin Burrfoot (JIRA)" To: java-dev@lucene.apache.org Subject: [jira] Issue Comment Edited: (LUCENE-1622) Multi-word synonym filter (synonym expansion at indexing time). In-Reply-To: <963523769.1240943432174.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/LUCENE-1622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12703790#action_12703790 ] Earwin Burrfoot edited comment on LUCENE-1622 at 4/28/09 11:50 AM: ------------------------------------------------------------------- I'll shortly cite my experiences mentioned on the list. * Injecting "synonym group id" token instead of all tokens for all synonyms in group is a big win with index size and saves you from matching for "big". It also plays better with highlighting (still had to rewrite it to handle all corner cases). * Properly handling multiword synonyms only on index-side is impossible, you have to dabble in query rewriting (even then low-probability corner cases exist, and you might find extra docs). * Query expansion is the only absolutely clear way to have multiword synonyms with current Lucene, but it is impractical on any adequate synonym dictionary. * There is a possible change to the way Lucene indexes tokens+positions to enable fully proper multiword synonyms (with index+query rewrite approach) - adding a notion of 'length' or 'span' to a token, this length should play together with positionIncrement when calculating distance between tokens in phrase/spannear queries. was (Author: earwin): I'll shortly cite my experiences mentioned on the list. * Injecting "synonym group id" token instead of all tokens for all synonyms in group is a big win with index size and saves you from matching for "big". It also plays better with highlighting (still had to rewrite it to handle all corner cases). * Properly handling multiword synonyms only on index-side is impossible, you have to dabble in query rewriting (even then low-probability corner cases exist, and you might find extra docs). * Query expansion is the only absolutely clear way to have multiword synonyms with current Lucene, but it is impractical on any adequate synonym dictionary. * There is a possible change to the way Lucene indexes tokens+positions to enable fully proper multiword synonyms - adding a notion of 'length' or 'span' to a token, this length should play together with positionIncrement when calculating distance between tokens in phrase/spannear queries. > Multi-word synonym filter (synonym expansion at indexing time). > --------------------------------------------------------------- > > Key: LUCENE-1622 > URL: https://issues.apache.org/jira/browse/LUCENE-1622 > Project: Lucene - Java > Issue Type: New Feature > Components: contrib/* > Reporter: Dawid Weiss > Priority: Minor > Attachments: synonyms.patch > > > It would be useful to have a filter that provides support for indexing-time synonym expansion, especially for multi-word synonyms (with multi-word matching for original tokens). > The problem is not trivial, as observed on the mailing list. The problems I was able to identify (mentioned in the unit tests as well): > - if multi-word synonyms are indexed together with the original token stream (at overlapping positions), then a query for a partial synonym sequence (e.g., "big" in the synonym "big apple" for "new york city") causes the document to match; > - there are problems with highlighting the original document when synonym is matched (see unit tests for an example), > - if the synonym is of different length than the original sequence of tokens to be matched, then phrase queries spanning the synonym and the original sequence boundary won't be found. Example "big apple" synonym for "new york city". A phrase query "big apple restaurants" won't match "new york city restaurants". > I am posting the patch that implements phrase synonyms as a token filter. This is not necessarily intended for immediate inclusion, but may provide a basis for many people to experiment and adjust to their own scenarios. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org For additional commands, e-mail: java-dev-help@lucene.apache.org