1
Новинка от Lucence
Как получить оценку от поиска?
Это формат поиск
Я видел пример того, как получить результат из [] массива ScoreDocs, но я хочу, чтобы положить его в классе SampleDataLucene Получить оценку от поиска
private static SampleData _mapLuceneDocumentToData(Document doc)
{
return new SampleData
{
sID = Convert.ToInt32(doc.Get("sID")),
Text = doc.Get("Text")
//Name = doc.Get("Name"),
//Description = doc.Get("Description")
};
}
private static IEnumerable<SampleData> _mapLuceneToDataList(IEnumerable<Document> hits)
{
return hits.Select(_mapLuceneDocumentToData).ToList();
}
private static IEnumerable<SampleData> _mapLuceneToDataList(IEnumerable<ScoreDoc> hits, IndexSearcher searcher)
{
return hits.Select(hit => _mapLuceneDocumentToData(searcher.Doc(hit.Doc))).ToList();
}
private static Query parseQuery(string searchQuery, QueryParser parser)
{
Query query;
try
{
query = parser.Parse(searchQuery.Trim());
}
catch (ParseException)
{
query = parser.Parse(QueryParser.Escape(searchQuery.Trim()));
}
return query;
}
private static IEnumerable<SampleData> _search (string searchQuery, string searchField = "")
{
// validation
if (string.IsNullOrEmpty(searchQuery.Replace("*", "").Replace("?", "")))
return new List<SampleData>();
// set up lucene searcher
using (var searcher = new IndexSearcher(_directory, false))
{
var hits_limit = 1000;
var analyzer = new StandardAnalyzer(Version.LUCENE_30);
// search by single field
if (!string.IsNullOrEmpty(searchField))
{
var parser = new QueryParser(Version.LUCENE_30, searchField, analyzer);
var query = parseQuery(searchQuery, parser);
var hits = searcher.Search(query, hits_limit).ScoreDocs;
var results = _mapLuceneToDataList(hits, searcher);
analyzer.Close();
searcher.Dispose();
return results; return results;
Слезай голосовать, что это проблема? Это очень четко заявленная проблема, и я опубликовал решение, которое я нашел. Это отличный пример того, как получить результаты поиска в классе. И с моим ответом, как подобрать счет тоже. – Paparazzi