You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by Uwe Schindler <uw...@thetaphi.de> on 2009/06/15 09:41:41 UTC
RE: svn commit: r784540 - in /lucene/java/trunk: ./ contrib/remote/ contrib/remote/src/ contrib/remote/src/java/ contrib/remote/src/java/org/ contrib/remote/src/java/org/apache/ contrib/remote/src/java/org/apache/lucene/ contrib/remote/src/java/org/apache
Hi Mike,
after adding a new contrib, I think we should also add this to the site docs
and also the javadocs generation in the main build.xml.
Should I prepare this? I have done this for spatial and trie in the past,
too.
Uwe
-----
Uwe Schindler
H.-H.-Meier-Allee 63, D-28213 Bremen
http://www.thetaphi.de
eMail: uwe@thetaphi.de
> -----Original Message-----
> From: mikemccand@apache.org [mailto:mikemccand@apache.org]
> Sent: Sunday, June 14, 2009 1:13 PM
> To: java-commits@lucene.apache.org
> Subject: svn commit: r784540 - in /lucene/java/trunk: ./ contrib/remote/
> contrib/remote/src/ contrib/remote/src/java/ contrib/remote/src/java/org/
> contrib/remote/src/java/org/apache/
> contrib/remote/src/java/org/apache/lucene/
> contrib/remote/src/java/org/apache/...
>
> Author: mikemccand
> Date: Sun Jun 14 11:13:04 2009
> New Revision: 784540
>
> URL: http://svn.apache.org/viewvc?rev=784540&view=rev
> Log:
> LUCENE-1407: move RemoteSearchable out of core into contrib/remote
>
> Added:
> lucene/java/trunk/contrib/remote/
> lucene/java/trunk/contrib/remote/build.xml
> lucene/java/trunk/contrib/remote/pom.xml.template
> lucene/java/trunk/contrib/remote/src/
> lucene/java/trunk/contrib/remote/src/java/
> lucene/java/trunk/contrib/remote/src/java/org/
> lucene/java/trunk/contrib/remote/src/java/org/apache/
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/
>
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RMIRemo
> teSearchable.java
>
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RemoteC
> achingWrapperFilter.java
> - copied, changed from r784216,
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteCachingWrapperFi
> lter.java
>
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RemoteS
> earchable.java
> - copied, changed from r784216,
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteSearchable.java
> lucene/java/trunk/contrib/remote/src/test/
> lucene/java/trunk/contrib/remote/src/test/org/
> lucene/java/trunk/contrib/remote/src/test/org/apache/
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/
>
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/RemoteC
> achingWrapperFilterHelper.java
> - copied unchanged from r784216,
> lucene/java/trunk/src/test/org/apache/lucene/search/RemoteCachingWrapperFi
> lterHelper.java
>
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteCachingWrapperFilter.java
> - copied, changed from r784216,
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteCachingWrapp
> erFilter.java
>
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteSearchable.java
> - copied, changed from r784216,
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteSearchable.j
> ava
>
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteSort.java
> Removed:
>
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteCachingWrapperFi
> lter.java
>
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteSearchable.java
>
> lucene/java/trunk/src/test/org/apache/lucene/search/RemoteCachingWrapperFi
> lterHelper.java
>
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteCachingWrapp
> erFilter.java
>
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteSearchable.j
> ava
> Modified:
> lucene/java/trunk/CHANGES.txt
> lucene/java/trunk/build.xml
> lucene/java/trunk/common-build.xml
>
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingSpanFilter.java
>
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingWrapperFilter.j
> ava
> lucene/java/trunk/src/java/org/apache/lucene/search/FilterManager.java
> lucene/java/trunk/src/java/org/apache/lucene/search/Searchable.java
> lucene/java/trunk/src/test/org/apache/lucene/search/TestSort.java
>
> Modified: lucene/java/trunk/CHANGES.txt
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?rev=784540&r1=7
> 84539&r2=784540&view=diff
> ==========================================================================
> ====
> --- lucene/java/trunk/CHANGES.txt (original)
> +++ lucene/java/trunk/CHANGES.txt Sun Jun 14 11:13:04 2009
> @@ -196,6 +196,11 @@
> were deprecated. You should instantiate the Directory manually before
> and pass it to these classes (LUCENE-1451, LUCENE-1658).
> (Uwe Schindler)
> +
> +21. LUCENE-1407: Move RemoteSearchable, RemoteCachingWrapperFilter out
> + of Lucene's core into new contrib/remote package. Searchable no
> + longer extends java.rmi.Remote (Simon Willnauer via Mike
> + McCandless)
>
> Bug fixes
>
>
> Modified: lucene/java/trunk/build.xml
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/build.xml?rev=784540&r1=784
> 539&r2=784540&view=diff
> ==========================================================================
> ====
> --- lucene/java/trunk/build.xml (original)
> +++ lucene/java/trunk/build.xml Sun Jun 14 11:13:04 2009
> @@ -77,15 +77,6 @@
> <!-- Prepares the build directory
> -->
> <!-- ==================================================================
> -->
>
> - <!-- Overrides common.compile-core to add rmic -->
> - <target name="compile-core" depends="common.compile-core"
> - description="Compiles core classes, including rmic">
> - <rmic classname="org.apache.lucene.search.RemoteSearchable"
> - base="${build.dir}/classes/java" stubversion="1.2">
> - <classpath refid="classpath"/>
> - </rmic>
> - </target>
> -
> <target name="test-core" depends="common.test"
> description="Runs unit tests for the core Lucene code"
> />
> @@ -136,11 +127,7 @@
> destdir="${build.dir}/${tag}/classes/java">
> <classpath refid="tag.classpath"/>
> </compile>
> - <rmic classname="org.apache.lucene.search.RemoteSearchable"
> - base="${build.dir}/${tag}/classes/java" stubversion="1.2">
> - <classpath refid="tag.classpath"/>
> - </rmic>
> -
> +
> <!-- compile jar for tag -->
> <jarify basedir="${build.dir}/${tag}/classes/java"
> destfile="${build.dir}/${tag}/${tag}.jar" />
>
> Modified: lucene/java/trunk/common-build.xml
> URL: http://svn.apache.org/viewvc/lucene/java/trunk/common-
> build.xml?rev=784540&r1=784539&r2=784540&view=diff
> ==========================================================================
> ====
> --- lucene/java/trunk/common-build.xml (original)
> +++ lucene/java/trunk/common-build.xml Sun Jun 14 11:13:04 2009
> @@ -42,7 +42,7 @@
> <property name="Name" value="Lucene"/>
> <property name="dev.version" value="2.9-dev"/>
> <property name="version" value="${dev.version}"/>
> - <property name="compatibility.tag"
> value="lucene_2_4_back_compat_tests_20090607b"/>
> + <property name="compatibility.tag"
> value="lucene_2_4_back_compat_tests_20090614"/>
> <property name="spec.version" value="${version}"/>
> <property name="year" value="2000-${current.year}"/>
> <property name="final.name" value="lucene-${name}-${version}"/>
>
> Added: lucene/java/trunk/contrib/remote/build.xml
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/build.xml?re
> v=784540&view=auto
> ==========================================================================
> ====
> --- lucene/java/trunk/contrib/remote/build.xml (added)
> +++ lucene/java/trunk/contrib/remote/build.xml Sun Jun 14 11:13:04 2009
> @@ -0,0 +1,34 @@
> +<?xml version="1.0"?>
> +
> +<!--
> + Licensed to the Apache Software Foundation (ASF) under one or more
> + contributor license agreements. See the NOTICE file distributed with
> + this work for additional information regarding copyright ownership.
> + The ASF licenses this file to You under the Apache License, Version
> 2.0
> + the "License"); you may not use this file except in compliance with
> + the License. You may obtain a copy of the License at
> +
> + http://www.apache.org/licenses/LICENSE-2.0
> +
> + Unless required by applicable law or agreed to in writing, software
> + distributed under the License is distributed on an "AS IS" BASIS,
> + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + See the License for the specific language governing permissions and
> + limitations under the License.
> + -->
> +
> +<project name="remote" default="default">
> +
> + <description>
> + Remote Searchable based on RMI
> + </description>
> +
> + <import file="../contrib-build.xml"/>
> +
> + <!-- Overrides common.compile-core to add rmic -->
> + <target name="compile-core" depends="common.compile-core"
> description="Compiles core classes, including rmic">
> + <rmic classname="org.apache.lucene.search.RemoteSearchable"
> base="${build.dir}/classes/java" stubversion="1.2">
> + <classpath refid="classpath" />
> + </rmic>
> + </target>
> +</project>
>
> Added: lucene/java/trunk/contrib/remote/pom.xml.template
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/pom.xml.temp
> late?rev=784540&view=auto
> ==========================================================================
> ====
> --- lucene/java/trunk/contrib/remote/pom.xml.template (added)
> +++ lucene/java/trunk/contrib/remote/pom.xml.template Sun Jun 14 11:13:04
> 2009
> @@ -0,0 +1,36 @@
> +<project xmlns="http://maven.apache.org/POM/4.0.0"
> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
> http://maven.apache.org/maven-v4_0_0.xsd">
> +
> + <!--
> + Licensed to the Apache Software Foundation (ASF) under one
> + or more contributor license agreements. See the NOTICE file
> + distributed with this work for additional information
> + regarding copyright ownership. The ASF licenses this file
> + to you under the Apache License, Version 2.0 (the
> + "License"); you may not use this file except in compliance
> + with the License. You may obtain a copy of the License at
> +
> + http://www.apache.org/licenses/LICENSE-2.0
> +
> + Unless required by applicable law or agreed to in writing,
> + software distributed under the License is distributed on an
> + "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> + KIND, either express or implied. See the License for the
> + specific language governing permissions and limitations
> + under the License.
> + -->
> +
> + <modelVersion>4.0.0</modelVersion>
> + <parent>
> + <groupId>org.apache.lucene</groupId>
> + <artifactId>lucene-contrib</artifactId>
> + <version>@version@</version>
> + </parent>
> + <groupId>org.apache.lucene</groupId>
> + <artifactId>lucene-regex</artifactId>
> + <name>Lucene Remote</name>
> + <version>@version@</version>
> + <description>Remote Searchable based on RMI</description>
> + <packaging>jar</packaging>
> +</project>
>
> Added:
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RMIRemo
> teSearchable.java
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/src/java/org
> /apache/lucene/search/RMIRemoteSearchable.java?rev=784540&view=auto
> ==========================================================================
> ====
> ---
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RMIRemo
> teSearchable.java (added)
> +++
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RMIRemo
> teSearchable.java Sun Jun 14 11:13:04 2009
> @@ -0,0 +1,46 @@
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version
> 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +package org.apache.lucene.search;
> +
> +import java.rmi.Remote;
> +
> +/**
> + * Marker interface to enable subclasses of {@link Searchable} to be used
> via
> + * Java RMI. Classes implementing this interface can be used as a RMI -
> + * "remote object".
> + * <p>
> + * {@link RMIRemoteSearchable} extends {@link Searchable} and can
> transparently
> + * be used as a such.
> + * <p>
> + * Example usage:
> + *
> + * <pre>
> + * RMIRemoteSearchable remoteObject = ...;
> + * String remoteObjectName = ...;
> + * Naming.rebind (remoteObjectName, remoteObject);
> + * Searchable luceneSearchable = (Searchable) Naming.lookup
> (remoteObjectName);
> + * </pre>
> + *
> + * </p>
> + * </p>
> + *
> + * @version $Id:$
> + */
> +public interface RMIRemoteSearchable extends Searchable, Remote {
> +
> +}
>
> Copied:
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RemoteC
> achingWrapperFilter.java (from r784216,
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteCachingWrapperFi
> lter.java)
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/src/java/org
> /apache/lucene/search/RemoteCachingWrapperFilter.java?p2=lucene/java/trunk
> /contrib/remote/src/java/org/apache/lucene/search/RemoteCachingWrapperFilt
> er.java&p1=lucene/java/trunk/src/java/org/apache/lucene/search/RemoteCachi
> ngWrapperFilter.java&r1=784216&r2=784540&rev=784540&view=diff
> ==========================================================================
> ====
> ---
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteCachingWrapperFi
> lter.java (original)
> +++
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RemoteC
> achingWrapperFilter.java Sun Jun 14 11:13:04 2009
> @@ -36,6 +36,8 @@
> * To cache a result you must do something like
> * RemoteCachingWrapperFilter f = new RemoteCachingWrapperFilter(new
> CachingWrapperFilter(myFilter));
> * <p/>
> + *
> + * @version $Id:$
> */
> public class RemoteCachingWrapperFilter extends Filter {
> protected Filter filter;
>
> Copied:
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RemoteS
> earchable.java (from r784216,
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteSearchable.java)
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/src/java/org
> /apache/lucene/search/RemoteSearchable.java?p2=lucene/java/trunk/contrib/r
> emote/src/java/org/apache/lucene/search/RemoteSearchable.java&p1=lucene/ja
> va/trunk/src/java/org/apache/lucene/search/RemoteSearchable.java&r1=784216
> &r2=784540&rev=784540&view=diff
> ==========================================================================
> ====
> ---
> lucene/java/trunk/src/java/org/apache/lucene/search/RemoteSearchable.java
> (original)
> +++
> lucene/java/trunk/contrib/remote/src/java/org/apache/lucene/search/RemoteS
> earchable.java Sun Jun 14 11:13:04 2009
> @@ -35,7 +35,7 @@
> */
> public class RemoteSearchable
> extends UnicastRemoteObject
> - implements Searchable {
> + implements RMIRemoteSearchable {
>
> private Searchable local;
>
>
> Copied:
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteCachingWrapperFilter.java (from r784216,
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteCachingWrapp
> erFilter.java)
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/src/test/org
> /apache/lucene/search/TestRemoteCachingWrapperFilter.java?p2=lucene/java/t
> runk/contrib/remote/src/test/org/apache/lucene/search/TestRemoteCachingWra
> pperFilter.java&p1=lucene/java/trunk/src/test/org/apache/lucene/search/Tes
> tRemoteCachingWrapperFilter.java&r1=784216&r2=784540&rev=784540&view=diff
> ==========================================================================
> ====
> ---
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteCachingWrapp
> erFilter.java (original)
> +++
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteCachingWrapperFilter.java Sun Jun 14 11:13:04 2009
> @@ -33,6 +33,8 @@
> /**
> * Tests that the index is cached on the searcher side of things.
> * NOTE: This is copied from TestRemoteSearchable since it already had a
> remote index set up.
> + *
> + * @version $Id:$
> */
> public class TestRemoteCachingWrapperFilter extends LuceneTestCase {
> public TestRemoteCachingWrapperFilter(String name) {
>
> Copied:
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteSearchable.java (from r784216,
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteSearchable.j
> ava)
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/src/test/org
> /apache/lucene/search/TestRemoteSearchable.java?p2=lucene/java/trunk/contr
> ib/remote/src/test/org/apache/lucene/search/TestRemoteSearchable.java&p1=l
> ucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteSearchable.ja
> va&r1=784216&r2=784540&rev=784540&view=diff
> ==========================================================================
> ====
> ---
> lucene/java/trunk/src/test/org/apache/lucene/search/TestRemoteSearchable.j
> ava (original)
> +++
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteSearchable.java Sun Jun 14 11:13:04 2009
> @@ -32,7 +32,7 @@
> import java.util.HashSet;
>
> /**
> - * @version $Id$
> + * @version $Id$
> */
> public class TestRemoteSearchable extends LuceneTestCase {
> public TestRemoteSearchable(String name) {
>
> Added:
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteSort.java
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/contrib/remote/src/test/org
> /apache/lucene/search/TestRemoteSort.java?rev=784540&view=auto
> ==========================================================================
> ====
> ---
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteSort.java (added)
> +++
> lucene/java/trunk/contrib/remote/src/test/org/apache/lucene/search/TestRem
> oteSort.java Sun Jun 14 11:13:04 2009
> @@ -0,0 +1,455 @@
> +package org.apache.lucene.search;
> +
> +/**
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements. See the NOTICE file distributed with
> + * this work for additional information regarding copyright ownership.
> + * The ASF licenses this file to You under the Apache License, Version
> 2.0
> + * (the "License"); you may not use this file except in compliance with
> + * the License. You may obtain a copy of the License at
> + *
> + * http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing, software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
> implied.
> + * See the License for the specific language governing permissions and
> + * limitations under the License.
> + */
> +
> +import java.io.IOException;
> +import java.io.Serializable;
> +import java.rmi.Naming;
> +import java.rmi.registry.LocateRegistry;
> +import java.util.HashMap;
> +import java.util.Iterator;
> +import java.util.Locale;
> +import java.util.Random;
> +
> +import junit.framework.Test;
> +import junit.framework.TestSuite;
> +import junit.textui.TestRunner;
> +
> +import org.apache.lucene.analysis.SimpleAnalyzer;
> +import org.apache.lucene.document.Document;
> +import org.apache.lucene.document.Field;
> +import org.apache.lucene.index.IndexReader;
> +import org.apache.lucene.index.IndexWriter;
> +import org.apache.lucene.index.Term;
> +import org.apache.lucene.store.RAMDirectory;
> +import org.apache.lucene.util.LuceneTestCase;
> +import org.apache.lucene.util._TestUtil;
> +
> +/**
> + * Unit tests for remote sorting code.
> + * Note: This is a modified copy of {@link TestSort} without duplicated
> test
> + * methods and therefore unused members and methodes.
> + *
> + * @version $Id:$
> + */
> +
> +public class TestRemoteSort extends LuceneTestCase implements
> Serializable {
> +
> + private Searcher full;
> + private Query queryX;
> + private Query queryY;
> + private Query queryA;
> + private Query queryF;
> + private Sort sort;
> +
> +
> + public TestRemoteSort (String name) {
> + super (name);
> + }
> +
> + public static void main (String[] argv) {
> + if (argv == null || argv.length < 1)
> + TestRunner.run (suite());
> + else if ("server".equals (argv[0])) {
> + TestRemoteSort test = new TestRemoteSort (null);
> + try {
> + test.startServer();
> + Thread.sleep (500000);
> + } catch (Exception e) {
> + System.out.println (e);
> + e.printStackTrace();
> + }
> + }
> + }
> +
> + public static Test suite() {
> + return new TestSuite (TestRemoteSort.class);
> + }
> +
> +
> + // document data:
> + // the tracer field is used to determine which document was hit
> + // the contents field is used to search and sort by relevance
> + // the int field to sort by int
> + // the float field to sort by float
> + // the string field to sort by string
> + // the i18n field includes accented characters for testing locale-
> specific sorting
> + private String[][] data = new String[][] {
> + // tracer contents int float string
> custom i18n long double, 'short', byte, 'custom
> parser encoding'
> + { "A", "x a", "5", "4f", "c", "A-
> 3", "p\u00EAche", "10", "-4.0", "3", "126", "J"},//A, x
> + { "B", "y a", "5", "3.4028235E38", "i", "B-
> 10", "HAT", "1000000000", "40.0", "24", "1", "I"},//B, y
> + { "C", "x a b c", "2147483647", "1.0", "j", "A-
> 2", "p\u00E9ch\u00E9", "99999999", "40.00002343", "125", "15",
> "H"},//C, x
> + { "D", "y a b c", "-1", "0.0f", "a", "C-
> 0", "HUT", String.valueOf(Long.MAX_VALUE),
> String.valueOf(Double.MIN_VALUE), String.valueOf(Short.MIN_VALUE),
> String.valueOf(Byte.MIN_VALUE), "G"},//D, y
> + { "E", "x a b c d", "5", "2f", "h", "B-
> 8", "peach", String.valueOf(Long.MIN_VALUE),
> String.valueOf(Double.MAX_VALUE), String.valueOf(Short.MAX_VALUE),
> String.valueOf(Byte.MAX_VALUE), "F"},//E,x
> + { "F", "y a b c d", "2", "3.14159f", "g", "B-
> 1", "H\u00C5T", "-44", "343.034435444", "-3", "0",
> "E"},//F,y
> + { "G", "x a b c d", "3", "-1.0", "f", "C-
> 100", "sin", "323254543543", "4.043544", "5", "100",
> "D"},//G,x
> + { "H", "y a b c d", "0", "1.4E-45", "e", "C-
> 88", "H\u00D8T", "1023423423005","4.043545", "10", "-50",
> "C"},//H,y
> + { "I", "x a b c d e f", "-2147483648", "1.0e+0", "d", "A-
> 10", "s\u00EDn", "332422459999", "4.043546", "-340", "51",
> "B"},//I,x
> + { "J", "y a b c d e f", "4", ".5", "b", "C-
> 7", "HOT", "34334543543", "4.0000220343", "300", "2",
> "A"},//J,y
> + { "W", "g", "1", null, null,
> null, null, null, null, null, null, null},
> + { "X", "g", "1", "0.1", null,
> null, null, null, null, null, null, null},
> + { "Y", "g", "1", "0.2", null,
> null, null, null, null, null, null, null},
> + { "Z", "f g", null, null, null,
> null, null, null, null, null, null, null}
> + };
> +
> + // create an index of all the documents, or just the x, or just the y
> documents
> + private Searcher getIndex (boolean even, boolean odd)
> + throws IOException {
> + RAMDirectory indexStore = new RAMDirectory ();
> + IndexWriter writer = new IndexWriter (indexStore, new
> SimpleAnalyzer(), true, IndexWriter.MaxFieldLength.LIMITED);
> + writer.setMaxBufferedDocs(2);
> + writer.setMergeFactor(1000);
> + for (int i=0; i<data.length; ++i) {
> + if (((i%2)==0 && even) || ((i%2)==1 && odd)) {
> + Document doc = new Document();
> + doc.add (new Field ("tracer", data[i][0], Field.Store.YES,
> Field.Index.NO));
> + doc.add (new Field ("contents", data[i][1], Field.Store.NO,
> Field.Index.ANALYZED));
> + if (data[i][2] != null) doc.add (new Field ("int",
> data[i][2], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][3] != null) doc.add (new Field ("float",
> data[i][3], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][4] != null) doc.add (new Field ("string",
> data[i][4], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][5] != null) doc.add (new Field ("custom",
> data[i][5], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][6] != null) doc.add (new Field ("i18n",
> data[i][6], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][7] != null) doc.add (new Field ("long",
> data[i][7], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][8] != null) doc.add (new Field ("double",
> data[i][8], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][9] != null) doc.add (new Field ("short",
> data[i][9], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][10] != null) doc.add (new Field ("byte",
> data[i][10], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + if (data[i][11] != null) doc.add (new Field ("parser",
> data[i][11], Field.Store.NO, Field.Index.NOT_ANALYZED));
> + doc.setBoost(2); // produce some scores above 1.0
> + writer.addDocument (doc);
> + }
> + }
> + //writer.optimize ();
> + writer.close ();
> + IndexSearcher s = new IndexSearcher (indexStore, false);
> + s.setDefaultFieldSortScoring(true, true);
> + return s;
> + }
> +
> + private Searcher getFullIndex()
> + throws IOException {
> + return getIndex (true, true);
> + }
> +
> + public String getRandomNumberString(int num, int low, int high) {
> + StringBuffer sb = new StringBuffer();
> + for (int i = 0; i < num; i++) {
> + sb.append(getRandomNumber(low, high));
> + }
> + return sb.toString();
> + }
> +
> + public String getRandomCharString(int num) {
> + return getRandomCharString(num, 48, 122);
> + }
> +
> + public String getRandomCharString(int num, int start, int end) {
> + StringBuffer sb = new StringBuffer();
> + for (int i = 0; i < num; i++) {
> + sb.append(new Character((char) getRandomNumber(start, end)));
> + }
> + return sb.toString();
> + }
> +
> + Random r;
> +
> + public int getRandomNumber(final int low, final int high) {
> +
> + int randInt = (Math.abs(r.nextInt()) % (high - low)) + low;
> +
> + return randInt;
> + }
> +
> + public void setUp() throws Exception {
> + super.setUp();
> + full = getFullIndex();
> + queryX = new TermQuery (new Term ("contents", "x"));
> + queryY = new TermQuery (new Term ("contents", "y"));
> + queryA = new TermQuery (new Term ("contents", "a"));
> + queryF = new TermQuery (new Term ("contents", "f"));
> + sort = new Sort();
> + }
> +
> +
> + static class MyFieldComparator extends FieldComparator {
> + int[] docValues;
> + int[] slotValues;
> + int bottomValue;
> +
> + MyFieldComparator(int numHits) {
> + slotValues = new int[numHits];
> + }
> +
> + public void copy(int slot, int doc) {
> + slotValues[slot] = docValues[doc];
> + }
> +
> + public int compare(int slot1, int slot2) {
> + return slotValues[slot1] - slotValues[slot2];
> + }
> +
> + public int compareBottom(int doc) {
> + return bottomValue - docValues[doc];
> + }
> +
> + public void setBottom(int bottom) {
> + bottomValue = slotValues[bottom];
> + }
> +
> + public void setNextReader(IndexReader reader, int docBase, int
> numSlotsFull) throws IOException {
> + docValues = FieldCache.DEFAULT.getInts(reader, "parser", new
> FieldCache.IntParser() {
> + public final int parseInt(final String val) {
> + return (val.charAt(0)-'A') * 123456;
> + }
> + });
> + }
> +
> + public int sortType() {
> + return 0;
> + }
> +
> + public Comparable value(int slot) {
> + return new Integer(slotValues[slot]);
> + }
> + }
> +
> + static class MyFieldComparatorSource extends FieldComparatorSource {
> + public FieldComparator newComparator(String fieldname, int numHits,
> int sortPos, boolean reversed) {
> + return new MyFieldComparator(numHits);
> + }
> + }
> +
> + // test a variety of sorts using a remote searcher
> + public void testRemoteSort() throws Exception {
> + Searchable searcher = getRemote();
> + MultiSearcher multi = new MultiSearcher (new Searchable[] { searcher
> });
> + runMultiSorts(multi, true); // this runs on the full index
> + }
> +
> + // test custom search when remote
> + public void testRemoteCustomSort() throws Exception {
> + Searchable searcher = getRemote();
> + MultiSearcher multi = new MultiSearcher (new Searchable[] { searcher
> });
> + sort.setSort (new SortField ("custom",
> SampleComparable.getComparatorSource()));
> + assertMatches (multi, queryX, sort, "CAIEG");
> + sort.setSort (new SortField ("custom",
> SampleComparable.getComparatorSource(), true));
> + assertMatches (multi, queryY, sort, "HJDBF");
> + SortComparator custom = SampleComparable.getComparator();
> + sort.setSort (new SortField ("custom", custom));
> + assertMatches (multi, queryX, sort, "CAIEG");
> + sort.setSort (new SortField ("custom", custom, true));
> + assertMatches (multi, queryY, sort, "HJDBF");
> + }
> +
> + // test that the relevancy scores are the same even if
> + // hits are sorted
> + public void testNormalizedScores() throws Exception {
> +
> + // capture relevancy scores
> + HashMap scoresX = getScores (full.search (queryX, null,
> 1000).scoreDocs, full);
> + HashMap scoresY = getScores (full.search (queryY, null,
> 1000).scoreDocs, full);
> + HashMap scoresA = getScores (full.search (queryA, null,
> 1000).scoreDocs, full);
> +
> + // we'll test searching locally, remote and multi
> + MultiSearcher remote = new MultiSearcher (new Searchable[] {
> getRemote() });
> +
> + // change sorting and make sure relevancy stays the same
> +
> + sort = new Sort();
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> +
> + sort.setSort(SortField.FIELD_DOC);
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> +
> + sort.setSort ("int");
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> +
> + sort.setSort ("float");
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> +
> + sort.setSort ("string");
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> +
> + sort.setSort (new String[] {"int","float"});
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> +
> + sort.setSort (new SortField[] { new SortField ("int", SortField.INT,
> true), new SortField (null, SortField.DOC, true) });
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> +
> + sort.setSort (new String[] {"float","string"});
> + assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> + assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> + }
> +
> + // runs a variety of sorts useful for multisearchers
> + private void runMultiSorts(Searcher multi, boolean isFull) throws
> Exception {
> + sort.setSort(SortField.FIELD_DOC);
> + String expected = isFull ? "ABCDEFGHIJ" : "ACEGIBDFHJ";
> + assertMatches(multi, queryA, sort, expected);
> +
> + sort.setSort(new SortField ("int", SortField.INT));
> + expected = isFull ? "IDHFGJABEC" : "IDHFGJAEBC";
> + assertMatches(multi, queryA, sort, expected);
> +
> + sort.setSort(new SortField[] {new SortField ("int", SortField.INT),
> SortField.FIELD_DOC});
> + expected = isFull ? "IDHFGJABEC" : "IDHFGJAEBC";
> + assertMatches(multi, queryA, sort, expected);
> +
> + sort.setSort("int");
> + expected = isFull ? "IDHFGJABEC" : "IDHFGJAEBC";
> + assertMatches(multi, queryA, sort, expected);
> +
> + sort.setSort(new SortField[] {new SortField ("float",
> SortField.FLOAT), SortField.FIELD_DOC});
> + assertMatches(multi, queryA, sort, "GDHJCIEFAB");
> +
> + sort.setSort("float");
> + assertMatches(multi, queryA, sort, "GDHJCIEFAB");
> +
> + sort.setSort("string");
> + assertMatches(multi, queryA, sort, "DJAIHGFEBC");
> +
> + sort.setSort("int", true);
> + expected = isFull ? "CABEJGFHDI" : "CAEBJGFHDI";
> + assertMatches(multi, queryA, sort, expected);
> +
> + sort.setSort("float", true);
> + assertMatches(multi, queryA, sort, "BAFECIJHDG");
> +
> + sort.setSort("string", true);
> + assertMatches(multi, queryA, sort, "CBEFGHIAJD");
> +
> + sort.setSort(new SortField[] { new SortField ("string", Locale.US)
> });
> + assertMatches(multi, queryA, sort, "DJAIHGFEBC");
> +
> + sort.setSort(new SortField[] { new SortField ("string", Locale.US,
> true) });
> + assertMatches(multi, queryA, sort, "CBEFGHIAJD");
> +
> + sort.setSort(new String[] {"int","float"});
> + assertMatches(multi, queryA, sort, "IDHFGJEABC");
> +
> + sort.setSort(new String[] {"float","string"});
> + assertMatches(multi, queryA, sort, "GDHJICEFAB");
> +
> + sort.setSort("int");
> + assertMatches(multi, queryF, sort, "IZJ");
> +
> + sort.setSort("int", true);
> + assertMatches(multi, queryF, sort, "JZI");
> +
> + sort.setSort("float");
> + assertMatches(multi, queryF, sort, "ZJI");
> +
> + sort.setSort("string");
> + assertMatches(multi, queryF, sort, "ZJI");
> +
> + sort.setSort("string", true);
> + assertMatches(multi, queryF, sort, "IJZ");
> + }
> +
> + // make sure the documents returned by the search match the expected
> list
> + private void assertMatches(Searcher searcher, Query query, Sort sort,
> + String expectedResult) throws IOException {
> + //ScoreDoc[] result = searcher.search (query, null, 1000,
> sort).scoreDocs;
> + TopDocs hits = searcher.search (query, null, expectedResult.length(),
> sort);
> + ScoreDoc[] result = hits.scoreDocs;
> + assertEquals(hits.totalHits, expectedResult.length());
> + StringBuffer buff = new StringBuffer(10);
> + int n = result.length;
> + for (int i=0; i<n; ++i) {
> + Document doc = searcher.doc(result[i].doc);
> + String[] v = doc.getValues("tracer");
> + for (int j=0; j<v.length; ++j) {
> + buff.append (v[j]);
> + }
> + }
> + assertEquals (expectedResult, buff.toString());
> + }
> +
> + private HashMap getScores (ScoreDoc[] hits, Searcher searcher)
> + throws IOException {
> + HashMap scoreMap = new HashMap();
> + int n = hits.length;
> + for (int i=0; i<n; ++i) {
> + Document doc = searcher.doc(hits[i].doc);
> + String[] v = doc.getValues("tracer");
> + assertEquals (v.length, 1);
> + scoreMap.put (v[0], new Float(hits[i].score));
> + }
> + return scoreMap;
> + }
> +
> + // make sure all the values in the maps match
> + private void assertSameValues (HashMap m1, HashMap m2) {
> + int n = m1.size();
> + int m = m2.size();
> + assertEquals (n, m);
> + Iterator iter = m1.keySet().iterator();
> + while (iter.hasNext()) {
> + Object key = iter.next();
> + Object o1 = m1.get(key);
> + Object o2 = m2.get(key);
> + if (o1 instanceof Float) {
> + assertEquals(((Float)o1).floatValue(), ((Float)o2).floatValue(),
> 1e-6);
> + } else {
> + assertEquals (m1.get(key), m2.get(key));
> + }
> + }
> + }
> +
> + private Searchable getRemote () throws Exception {
> + try {
> + return lookupRemote ();
> + } catch (Throwable e) {
> + startServer ();
> + return lookupRemote ();
> + }
> + }
> +
> + private Searchable lookupRemote () throws Exception {
> + return (Searchable) Naming.lookup ("//localhost:" + port +
> "/SortedSearchable");
> + }
> +
> + private int port = -1;
> +
> + private void startServer () throws Exception {
> + // construct an index
> + port = _TestUtil.getRandomSocketPort();
> + Searcher local = getFullIndex();
> + // local.search (queryA, new Sort());
> +
> + // publish it
> + LocateRegistry.createRegistry (port);
> + RemoteSearchable impl = new RemoteSearchable (local);
> + Naming.rebind ("//localhost:" + port + "/SortedSearchable", impl);
> + }
> +
> +}
>
> Modified:
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingSpanFilter.java
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> search/CachingSpanFilter.java?rev=784540&r1=784539&r2=784540&view=diff
> ==========================================================================
> ====
> ---
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingSpanFilter.java
> (original)
> +++
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingSpanFilter.java
> Sun Jun 14 11:13:04 2009
> @@ -31,8 +31,7 @@
> protected SpanFilter filter;
>
> /**
> - * A transient Filter cache. To cache Filters even when using {@link
> org.apache.lucene.search.RemoteSearchable} use
> - * {@link org.apache.lucene.search.RemoteCachingWrapperFilter} instead.
> + * A transient Filter cache.
> */
> protected transient Map cache;
>
>
> Modified:
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingWrapperFilter.j
> ava
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> search/CachingWrapperFilter.java?rev=784540&r1=784539&r2=784540&view=diff
> ==========================================================================
> ====
> ---
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingWrapperFilter.j
> ava (original)
> +++
> lucene/java/trunk/src/java/org/apache/lucene/search/CachingWrapperFilter.j
> ava Sun Jun 14 11:13:04 2009
> @@ -32,8 +32,7 @@
> protected Filter filter;
>
> /**
> - * A transient Filter cache. To cache Filters even when using {@link
> RemoteSearchable} use
> - * {@link RemoteCachingWrapperFilter} instead.
> + * A transient Filter cache.
> */
> protected transient Map cache;
>
>
> Modified:
> lucene/java/trunk/src/java/org/apache/lucene/search/FilterManager.java
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> search/FilterManager.java?rev=784540&r1=784539&r2=784540&view=diff
> ==========================================================================
> ====
> --- lucene/java/trunk/src/java/org/apache/lucene/search/FilterManager.java
> (original)
> +++ lucene/java/trunk/src/java/org/apache/lucene/search/FilterManager.java
> Sun Jun 14 11:13:04 2009
> @@ -25,8 +25,8 @@
> import java.util.TreeSet;
>
> /**
> - * Filter caching singleton. It can be used by {@link
> org.apache.lucene.search.RemoteCachingWrapperFilter}
> - * or just to save filters locally for reuse.
> + * Filter caching singleton. It can be used
> + * to save filters locally for reuse.
> * This class makes it possble to cache Filters even when using RMI, as
> it
> * keeps the cache on the seaercher side of the RMI connection.
> *
>
> Modified:
> lucene/java/trunk/src/java/org/apache/lucene/search/Searchable.java
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/src/java/org/apache/lucene/
> search/Searchable.java?rev=784540&r1=784539&r2=784540&view=diff
> ==========================================================================
> ====
> --- lucene/java/trunk/src/java/org/apache/lucene/search/Searchable.java
> (original)
> +++ lucene/java/trunk/src/java/org/apache/lucene/search/Searchable.java
> Sun Jun 14 11:13:04 2009
> @@ -35,7 +35,7 @@
> * they may be efficiently passed to a remote index, with only the top-
> scoring
> * hits being returned, rather than every matching hit.
> */
> -public interface Searchable extends java.rmi.Remote {
> +public interface Searchable {
> /** Lower-level search API.
> *
> * <p>{@link HitCollector#collect(int,float)} is called for every non-
> zero
>
> Modified:
> lucene/java/trunk/src/test/org/apache/lucene/search/TestSort.java
> URL:
> http://svn.apache.org/viewvc/lucene/java/trunk/src/test/org/apache/lucene/
> search/TestSort.java?rev=784540&r1=784539&r2=784540&view=diff
> ==========================================================================
> ====
> --- lucene/java/trunk/src/test/org/apache/lucene/search/TestSort.java
> (original)
> +++ lucene/java/trunk/src/test/org/apache/lucene/search/TestSort.java Sun
> Jun 14 11:13:04 2009
> @@ -19,8 +19,6 @@
>
> import java.io.IOException;
> import java.io.Serializable;
> -import java.rmi.Naming;
> -import java.rmi.registry.LocateRegistry;
> import java.util.BitSet;
> import java.util.HashMap;
> import java.util.Iterator;
> @@ -29,7 +27,6 @@
>
> import junit.framework.Test;
> import junit.framework.TestSuite;
> -import junit.textui.TestRunner;
>
> import org.apache.lucene.analysis.SimpleAnalyzer;
> import org.apache.lucene.document.Document;
> @@ -44,7 +41,6 @@
> import org.apache.lucene.store.RAMDirectory;
> import org.apache.lucene.util.DocIdBitSet;
> import org.apache.lucene.util.LuceneTestCase;
> -import org.apache.lucene.util._TestUtil;
>
> /**
> * Unit tests for sorting code.
> @@ -74,21 +70,6 @@
> super (name);
> }
>
> - public static void main (String[] argv) {
> - if (argv == null || argv.length < 1)
> - TestRunner.run (suite());
> - else if ("server".equals (argv[0])) {
> - TestSort test = new TestSort (null);
> - try {
> - test.startServer();
> - Thread.sleep (500000);
> - } catch (Exception e) {
> - System.out.println (e);
> - e.printStackTrace();
> - }
> - }
> - }
> -
> public static Test suite() {
> return new TestSuite (TestSort.class);
> }
> @@ -653,28 +634,6 @@
> runMultiSorts(searcher, false);
> }
>
> - // test a variety of sorts using a remote searcher
> - public void testRemoteSort() throws Exception {
> - Searchable searcher = getRemote();
> - MultiSearcher multi = new MultiSearcher (new Searchable[] { searcher
> });
> - runMultiSorts(multi, true); // this runs on the full index
> - }
> -
> - // test custom search when remote
> - public void testRemoteCustomSort() throws Exception {
> - Searchable searcher = getRemote();
> - MultiSearcher multi = new MultiSearcher (new Searchable[] { searcher
> });
> - sort.setSort (new SortField ("custom",
> SampleComparable.getComparatorSource()));
> - assertMatches (multi, queryX, sort, "CAIEG");
> - sort.setSort (new SortField ("custom",
> SampleComparable.getComparatorSource(), true));
> - assertMatches (multi, queryY, sort, "HJDBF");
> - SortComparator custom = SampleComparable.getComparator();
> - sort.setSort (new SortField ("custom", custom));
> - assertMatches (multi, queryX, sort, "CAIEG");
> - sort.setSort (new SortField ("custom", custom, true));
> - assertMatches (multi, queryY, sort, "HJDBF");
> - }
> -
> // test that the relevancy scores are the same even if
> // hits are sorted
> public void testNormalizedScores() throws Exception {
> @@ -685,97 +644,73 @@
> HashMap scoresA = getScores (full.search (queryA, null,
> 1000).scoreDocs, full);
>
> // we'll test searching locally, remote and multi
> - MultiSearcher remote = new MultiSearcher (new Searchable[] {
> getRemote() });
> +
> MultiSearcher multi = new MultiSearcher (new Searchable[] { searchX,
> searchY });
>
> // change sorting and make sure relevancy stays the same
>
> sort = new Sort();
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> sort.setSort(SortField.FIELD_DOC);
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> sort.setSort ("int");
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> sort.setSort ("float");
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> sort.setSort ("string");
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> sort.setSort (new String[] {"int","float"});
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> sort.setSort (new SortField[] { new SortField ("int", true), new
> SortField (null, SortField.DOC, true) });
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> sort.setSort (new String[] {"float","string"});
> assertSameValues (scoresX, getScores (full.search (queryX, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresX, getScores (remote.search (queryX, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresX, getScores (multi.search (queryX, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresY, getScores (full.search (queryY, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresY, getScores (remote.search (queryY, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresY, getScores (multi.search (queryY, null,
> 1000, sort).scoreDocs, multi));
> assertSameValues (scoresA, getScores (full.search (queryA, null,
> 1000, sort).scoreDocs, full));
> - assertSameValues (scoresA, getScores (remote.search (queryA, null,
> 1000, sort).scoreDocs, remote));
> assertSameValues (scoresA, getScores (multi.search (queryA, null,
> 1000, sort).scoreDocs, multi));
>
> }
> @@ -1077,31 +1012,4 @@
> }
> }
>
> - private Searchable getRemote () throws Exception {
> - try {
> - return lookupRemote ();
> - } catch (Throwable e) {
> - startServer ();
> - return lookupRemote ();
> - }
> - }
> -
> - private Searchable lookupRemote () throws Exception {
> - return (Searchable) Naming.lookup ("//localhost:" + port +
> "/SortedSearchable");
> - }
> -
> - private static int port = -1;
> -
> - private void startServer () throws Exception {
> - // construct an index
> - port = _TestUtil.getRandomSocketPort();
> - Searcher local = getFullIndex();
> - // local.search (queryA, new Sort());
> -
> - // publish it
> - LocateRegistry.createRegistry (port);
> - RemoteSearchable impl = new RemoteSearchable (local);
> - Naming.rebind ("//localhost:" + port + "/SortedSearchable", impl);
> - }
> -
> }
>
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org