Lucene: анализатор запросов не работает должным образом - PullRequest
1 голос
/ 16 декабря 2011

Я использую Lucene.Net, но я уверен, что он все еще подходит для вкуса не .Net.

Это мой запрос:

Collection:drwho AND Format:"Blu-ray"

Это то, что запросПарсер делает с этим:

{+Collection:drwho +Format:"blu ray"}

Это явно не то, что я преследую.Вот код, который я использую:

Dim analyzer = New StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29)
Dim qp = New QueryParser(Lucene.Net.Util.Version.LUCENE_29, Nothing, analyzer)
Dim q As Query = qp.Parse(query)

Любые идеи о том, почему запрос выполняется?Согласно http://lucene.apache.org/java/3_4_0/queryparsersyntax.html, я не могу на всю жизнь понять, что не так с моим запросом ...

1 Ответ

0 голосов
/ 16 декабря 2011

Для полей NOT_ANALYZED необходимо либо создать TermQuery в своем коде, либо использовать KeywordAnalyzer, так как для этого требуется точное совпадение с термином в индексе и в вашем запросе (ваши входные данные хранятся в индексе как Blu-ray ) где другие анализаторы обрабатывают ввод и конвертируют, например, Blu-ray в blu ray, как вы уже заметили.

Если вы измените свое поле на ANALYZED и будете использовать StandardAnalyzer при индексации, ваш запрос также будет работать в текущей форме.

...