Lucene.Net документирует все с одинаковым счетом, несмотря на некоторую разницу - PullRequest
1 голос
/ 15 декабря 2011

Я запускаю какой-то запрос на Lucene.net, что он возвращает несколько документов только с разницей в атрибуте unit

запрос: + дом: 5757 улица: "madeup" улица: ручей * блок: 114 * остаток: 66103 * остаток: "114 miami fl 66103"

и я получаю несколько документов с

house:5757 street:"madeup" street:creek unit:100 remainder:"100 miami fl 66103"
house:5757 street:"madeup" street:creek unit:101 remainder:"101 miami fl 66103"
house:5757 street:"madeup" street:creek unit:102 remainder:"102 miami fl 66103"
...
house:5757 street:"madeup" street:creek unit:114 remainder:"114 miami fl 66103"
...
...
house:5757 street:"madeup" street:creek unit:200 remainder:"200 miami fl 66103"

Я получаю записи с

var collector = TopScoreDocCollector.create(25, true);
searcher.Search(topQuery, collector);

проблемная часть состоит в том, что все эти документы поступают с одинаковым счетом 5.09505, поэтому совпадение единиц на самом деле не имеет никакого значения для оценки документа

когда документы проиндексированы, вот как я индексирую поле unit:

doc.Add(new Field("unit", unitValue, Field.Store.YES, Field.Index.NOT_ANALYZED));

Редактировать некоторые поиски в Google показывают, что RewriteMethod нужно изменить, но не совсем точно, потому что я не видел полный пример

1 Ответ

1 голос
/ 15 декабря 2011

В вашем поиске есть несколько символов подстановки. Хиты от подстановочных запросов в Lucene по умолчанию будут возвращать постоянные оценки.

Подстановочные запросы являются запросами MultiTermQueries.

Попробуйте установить другое значение для метода перезаписи MultiTermQuery на вашем QueryParser и посмотрите, если вы получите другие результаты:

QueryParser.setMultiTermRewriteMethod

...