2012-06-26 3 views
0

Я ищу систему поиска продукта. Все предложили Lucene.NET, но мне интересно, работает ли это так, как я мог ожидать. Я хочу, чтобы Lucene документировал поля из базы данных MSSQL, чтобы было доступно пять различных полей продукта.Lucene.Net Ключевое слово продукта Поиск

1) Можно ли создавать документы из базы данных SQL?

Все образцы, которые я могу найти, используют жестко заданные значения. Я хочу заполнить документы из пяти столбцов продукта из базы данных.

Как установить текст var так, чтобы он извлекал все из базы данных в этом конкретном поле?

Document doc = new Document(); 
doc.Add(new Field("id", i.ToString(), Field.Store.YES, Field.Index.NO)); 
doc.Add(new Field("ProductDescription", text, Field.Store.YES, Field.Index.TOKENIZED)); 
writer.AddDocument(doc); 

2) Как найти несколько полей с одним запросом?

var queryParser = new QueryParser(Version.LUCENE_30, "ProductName", analyzer); 
queryParser += new QueryParser(Version.LUCENE_30, "ProductDescription", analyzer); 
queryParser += new QueryParser(Version.LUCENE_30, "ProductSpecification", analyzer); 
queryParser += new QueryParser(Version.LUCENE_30, "ProductDetails", analyzer); 
queryParser += new QueryParser(Version.LUCENE_30, "ProductKeywords", analyzer); 

var query = queryParser.Parse("plasma tv"); 
//should return results for Sony Plasma TV, Sony HD Plasma, Sony 32 inch Plasma, Philips Plasma TV 

Любые учебные пособия по MS SQL для Lucene?

+0

"Каждый предложил Lucene.Net". Я действительно предлагаю вам пойти с Солром. Solr является HTTP над Lucene и отлично работает с индексацией базы данных, и вам не нужно писать какой-либо код. Его можно рассматривать как поисковый сервер. Вы сможете ответить на оба вопроса самостоятельно, когда работаете с Solr. Я знаю, вы могли бы потратить некоторое время на Луцен. Просто скачайте Solr и попробуйте его на полдня. Сообщите мне обратную связь. – Yavar

+0

Интересно. Это сайт: http://code.google.com/p/solrnet/ для Solr, который я должен использовать с моим проектом .Net? – User970008

+0

@Yavar, но AFAIK вам нужно настроить Solr на выделенном сервере, который может быть немного накладными для проектов с ограниченным бюджетом. –

ответ

0

Для поиска нескольких полей с помощью Lucene.Net вы либо вручную создаете логический запрос, либо добавляете к нему отдельные полевые запросы, либо используете MultiFieldQueryParser для создания логического запроса для вас или используете query parser syntax. Примеры:

1) Руководство строительства, для 2-х полей:

var query = new BooleanQuery(); 
Query nameQuery = 
    new QueryParser(Version.LUCENE_30, "ProductName", analyzer).Parse(keyword); 
Query descriptionQuery = 
    new QueryParser(Version.LUCENE_30, "ProductDescription", analyzer).Parse(keyword); 
query.Add(nameQuery, BooleanClause.Occur.SHOULD); 
query.Add(descriptionQuery, BooleanClause.Occur.SHOULD); 

2) MultiFieldQueryParser:

Query query = new MultiFieldQueryParser(      
          Version.LUCENE_30, 
          new string[] { "ProductName", "ProductDescription" }, 
          analyzer) 
       .Parse(keyword); 
-1

Может быть, вы также можете попробовать индексировать полный текст, предоставляемый SQL Server.

+0

Это должен быть комментарий, а не ответ :). Вопрос пользователя довольно прост. Он не просит предложения. ЕСЛИ вам нужно дать один, лучше предоставить его в комментариях. – Yavar

+0

Привет Хихо, я не могу использовать полнотекстовый поиск с этим клиентом (по политическим причинам). Спасибо, в любом случае. – User970008