Revision: 7175
http://languagetool.svn.sourceforge.net/languagetool/?rev=7175&view=rev
Author: dnaber
Date: 2012-06-02 17:59:09 +0000 (Sat, 02 Jun 2012)
Log Message:
-----------
don't sort by relevance; provide information whether query was relaxed (i.e.
unsupported)
Modified Paths:
--------------
trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java
trunk/JLanguageTool/src/dev/org/languagetool/dev/index/SearcherResult.java
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java
Modified: trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java
===================================================================
--- trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java
2012-06-02 16:14:15 UTC (rev 7174)
+++ trunk/JLanguageTool/src/dev/org/languagetool/dev/index/Searcher.java
2012-06-02 17:59:09 UTC (rev 7175)
@@ -23,15 +23,12 @@
import java.util.ArrayList;
import java.util.List;
+import org.apache.lucene.search.*;
import org.languagetool.JLanguageTool;
import org.languagetool.Language;
import org.languagetool.rules.Rule;
import org.languagetool.rules.RuleMatch;
import org.apache.lucene.document.Document;
-import org.apache.lucene.search.IndexSearcher;
-import org.apache.lucene.search.Query;
-import org.apache.lucene.search.ScoreDoc;
-import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.FSDirectory;
import org.languagetool.rules.patterns.PatternRule;
@@ -74,11 +71,12 @@
public SearcherResult findRuleMatchesOnIndex(PatternRule rule, Language
language, IndexSearcher indexSearcher) throws IOException {
final PossiblyRelaxedQuery query = createQuery(rule);
- final TopDocs topDocs = indexSearcher.search(query.query, maxHits);
+ final Sort sort = new Sort(new SortField("docCount", SortField.INT)); //
do not sort by relevance as this will move the shortest documents to the top
+ final TopDocs topDocs = indexSearcher.search(query.query, maxHits, sort);
final JLanguageTool languageTool = getLanguageToolWithOneRule(language,
rule);
final List<MatchingSentence> matchingSentences =
findMatchingSentences(indexSearcher, topDocs, languageTool);
final int sentencesChecked = getSentenceCheckCount(query, topDocs,
indexSearcher);
- return new SearcherResult(matchingSentences, sentencesChecked);
+ return new SearcherResult(matchingSentences, sentencesChecked,
query.isRelaxed);
}
PatternRule getRuleById(String ruleId, File xmlRuleFile) throws IOException {
Modified:
trunk/JLanguageTool/src/dev/org/languagetool/dev/index/SearcherResult.java
===================================================================
--- trunk/JLanguageTool/src/dev/org/languagetool/dev/index/SearcherResult.java
2012-06-02 16:14:15 UTC (rev 7174)
+++ trunk/JLanguageTool/src/dev/org/languagetool/dev/index/SearcherResult.java
2012-06-02 17:59:09 UTC (rev 7175)
@@ -27,10 +27,12 @@
private final List<MatchingSentence> matchingSentences;
private final int checkedSentences;
+ private final boolean relaxedQuery;
- public SearcherResult(List<MatchingSentence> matchingSentences, int
checkedSentences) {
+ public SearcherResult(List<MatchingSentence> matchingSentences, int
checkedSentences, boolean relaxedQuery) {
this.matchingSentences = matchingSentences;
this.checkedSentences = checkedSentences;
+ this.relaxedQuery = relaxedQuery;
}
public List<MatchingSentence> getMatchingSentences() {
@@ -40,4 +42,8 @@
public int getCheckedSentences() {
return checkedSentences;
}
+
+ public boolean isRelaxedQuery() {
+ return relaxedQuery;
+ }
}
Modified:
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java
===================================================================
---
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java
2012-06-02 16:14:15 UTC (rev 7174)
+++
trunk/JLanguageTool/src/test/org/languagetool/dev/index/IndexerSearcherTest.java
2012-06-02 17:59:09 UTC (rev 7175)
@@ -61,14 +61,17 @@
errorSearcher.findRuleMatchesOnIndex(getRule("BACK_AND_FOURTH"),
Language.ENGLISH, searcher);
assertEquals(2, searcherResult.getCheckedSentences());
assertEquals(1, searcherResult.getMatchingSentences().size());
+ assertEquals(false, searcherResult.isRelaxedQuery());
searcherResult = errorSearcher.findRuleMatchesOnIndex(getRule("EYE_BROW"),
Language.ENGLISH, searcher);
assertEquals(1, searcherResult.getCheckedSentences());
assertEquals(1, searcherResult.getMatchingSentences().size());
+ assertEquals(true, searcherResult.isRelaxedQuery());
searcherResult =
errorSearcher.findRuleMatchesOnIndex(getRule("ALL_OVER_THE_WORD"),
Language.ENGLISH, searcher);
assertEquals(2, searcherResult.getCheckedSentences());
assertEquals(0, searcherResult.getMatchingSentences().size());
+ assertEquals(false, searcherResult.isRelaxedQuery());
try {
errorSearcher.findRuleMatchesOnIndex(getRule("Invalid Rule Id"),
Language.ENGLISH, searcher);
@@ -93,6 +96,7 @@
final SearcherResult searcherResult =
errorSearcher.findRuleMatchesOnIndex(rule1, Language.ENGLISH, indexSearcher);
assertEquals(1, searcherResult.getCheckedSentences());
assertEquals(1, searcherResult.getMatchingSentences().size());
+ assertEquals(false, searcherResult.isRelaxedQuery());
final List<RuleMatch> ruleMatches =
searcherResult.getMatchingSentences().get(0).getRuleMatches();
assertEquals(1, ruleMatches.size());
final Rule rule = ruleMatches.get(0).getRule();
@@ -102,6 +106,29 @@
}
}
+ public void testIndexerSearcherWithRegexRule() throws Exception {
+ createIndex("How to move back and fourth from linux to xmb?");
+ final Searcher errorSearcher = new Searcher();
+ final List<Element> elements = Arrays.asList(
+ new Element("move", false, false, false),
+ new Element("forth|back", false, true, false)
+ );
+ final PatternRule rule1 = new PatternRule("RULE1", Language.ENGLISH,
elements, "desc", "msg", "shortMsg");
+ final IndexSearcher indexSearcher = new IndexSearcher(directory);
+ try {
+ final SearcherResult searcherResult =
errorSearcher.findRuleMatchesOnIndex(rule1, Language.ENGLISH, indexSearcher);
+ assertEquals(1, searcherResult.getCheckedSentences());
+ assertEquals(1, searcherResult.getMatchingSentences().size());
+ assertEquals(false, searcherResult.isRelaxedQuery());
+ final List<RuleMatch> ruleMatches =
searcherResult.getMatchingSentences().get(0).getRuleMatches();
+ assertEquals(1, ruleMatches.size());
+ final Rule rule = ruleMatches.get(0).getRule();
+ assertEquals("RULE1", rule.getId());
+ } finally {
+ indexSearcher.close();
+ }
+ }
+
/*public void testFoo() throws Exception {
createIndex("Daily Bleed's Anarchist Encyclopedia");
final List<Element> elements = Arrays.asList(
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Languagetool-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-cvs