lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ben Dotte (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-916) It is not possible to sort with sorttype auto on a field that does not exist
Date Thu, 07 Jun 2007 16:02:26 GMT

    [ https://issues.apache.org/jira/browse/LUCENE-916?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12502398
] 

Ben Dotte commented on LUCENE-916:
----------------------------------

I'm also having this problem. I'm trying to use Compass and originally reported the problem
in their forum: http://forums.opensymphony.com/thread.jspa?threadID=87305&tstart=0

But I agree this seems more like a problem with Lucene itself. I have written a junit testcase
that only uses Lucene objects that generates the same exception I was getting in Compass:

public class CompassSortTest extends TestCase
{
	public void testLuceneMultiSearcherSort() throws Exception
	{
		RAMDirectory dir1 = new RAMDirectory();
		RAMDirectory dir2 = new RAMDirectory();
		
		Analyzer analyzer = new StandardAnalyzer();
		IndexWriter writer1 = new IndexWriter(dir1, analyzer, true);
		writer1.optimize();
		writer1.close();
		
		IndexWriter writer2 = new IndexWriter(dir2, analyzer, true);
		Document doc = new Document();
		doc.add(new Field("displayName", "obj1", Store.YES, Index.TOKENIZED));
		doc.add(new Field("id", "1", Store.YES, Index.UN_TOKENIZED));
		doc.add(new Field("sortField", "3", Store.NO, Index.UN_TOKENIZED));
		writer2.addDocument(doc);
		writer2.optimize();
		writer2.close();
		
		IndexSearcher searcher1 = new IndexSearcher(dir1);
		IndexSearcher searcher2 = new IndexSearcher(dir2);
		MultiSearcher multiSearcher = new MultiSearcher(new Searchable[] {searcher1, searcher2});
		QueryParser parser = new QueryParser("displayName", analyzer);
		Query query = parser.parse("o*");
		Sort sort = new Sort("sortField");
		Hits hits = multiSearcher.search(query, sort);
		
		assertEquals("2", hits.doc(0).get("id"));
		assertEquals("3", hits.doc(1).get("id"));
		assertEquals("1", hits.doc(2).get("id"));
	}
}

The problem occurs when using a MultiSearcher that has at least one IndexSearcher tied to
a Directory with no documents in it. If I have 2 IndexSearchers, each with 1 document the
test passes. It is only when one of the IndexSearchers has no documents that the test fails.
The exception I get is "no terms in field sortField - cannot determine sort type" on FieldCacheImpl.java
line 331.

> It is not possible to sort with sorttype auto on a field that does not exist
> ----------------------------------------------------------------------------
>
>                 Key: LUCENE-916
>                 URL: https://issues.apache.org/jira/browse/LUCENE-916
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: Search
>    Affects Versions: 1.9, 2.0.0, 2.0.1, 2.1, 2.2
>            Reporter: Daan de Wit
>
> When sorting with type auto on a field that does not exist, a RuntimeException is thrown
from FieldCacheImpl.java line 346. This is especially a problem when using MultiSearcher.
This issue is related to: http://issues.apache.org/jira/browse/LUCENE-374

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


Mime
View raw message