Как использовать MultiFieldQueryParser из Lucene? - PullRequest
5 голосов
/ 13 января 2012

Я использую Version.Lucene_29. Используя обычный строковый метод запроса, я мог бы сделать следующее:

Directory directory = new FSDirectory(...);
//Start Lucene retrieval.
IndexSearcher iSearch = new IndexSearcher(directory, true);
Analyzer analyzer = new WhitespaceAnalyzer();
QueryParser parser = new QueryParser(Version.LUCENE_29, "content", analyzer);
String str = 'filename:testfile.txt AND filetext:"Singapore food"'
Query query = parser.parse(str);
ScoreDoc[] hits = iSearch.search(query, 1000).scoreDocs;

Как запустить запрос с использованием MultiFieldQueryParser в Lucene, аналогичный методу строкового запроса?

MultiFieldQueryParser multiParser = new MultiFieldQueryParser(
    Version.LUCENE_29, new String[] {"content", "ne"}, analyzer);
str = ???
Query = ????
ScoreDoc[] hits = iSearch.search(query, 1000).scoreDocs;

Ответы [ 2 ]

11 голосов
/ 29 ноября 2012

MultiFieldQueryParser позволяет вам искать «WORD» более чем в одном поле с одним и тем же анализатором.

например.

 Query query = MultiFieldQueryParser.parse("development",
        new String[]{"title", "subject"},
        new SimpleAnalyzer());

будет искать развитие слова в поле: "title" и поле: "subject"

1 голос
/ 19 января 2012

MultiFieldQueryParser is-a QueryParser, MultiFieldQueryParser создает два запроса в BooleanClause в этом случае.Так что он также поддерживает имя файла: testfile.txt И filetext: "Сингапурская еда" .

...