2012-06-26 2 views
0

제품 검색 엔진을 찾고 있습니다. 누구나 Lucene.NET을 제안했지만 예상대로 작동하는지 궁금합니다. 5 가지 제품 필드를 검색 할 수 있도록 Lucene 문서를 MSSQL 데이터베이스에서 제공하고 싶습니다.Lucene.Net 제품 키워드 검색

1) SQL 데이터베이스에서 문서를 만들 수 있습니까?

찾을 수있는 모든 샘플은 하드 코딩 된 값을 사용합니다. 데이터베이스의 5 개 제품 컬럼에서 문서를 채 웁니다.

텍스트 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 

Lucene에 대한 MS SQL에 대한 자습서가 있습니까?

+0

"모든 사람은 Lucene.NET을 제안했다". 나는 정말로 당신이 솔로와 함께 할 것을 제안합니다. Solr은 Lucene 이상의 HTTP이며 데이터베이스 인덱싱 기능이 뛰어나며 코드를 작성하지 않아도됩니다. 그것은 검색 서버로 간주 될 수 있습니다. Solr과 함께 일할 때 자신의 질문에 모두 대답 할 수 있습니다. 네가 루네에게 시간을 보낸 것 같아. Solr을 다운로드하고 반나절 동안 시험해보십시오. 나에게 피드백을 알려줘. – Yavar

+0

흥미 롭습니다. 이 사이트입니까 : http://code.google.com/p/solrnet/ Solr for. 내 .NET 프로젝트와 함께 사용해야합니까? – User970008

+0

@Yavar 그러나 AFAIK 당신은 제한된 예산 프로젝트를위한 약간의 오버 헤드가 될 수있는 전용 서버에 Solr을 설치해야합니다. –

답변

0

Lucene.Net을 사용하여 여러 필드를 검색하려면 부울 쿼리를 수동으로 생성하고 개별 필드 쿼리를 추가하거나 MultiFieldQueryParser를 사용하여 부울 쿼리를 생성하거나 query parser syntax을 사용합니다. 예 :이 개 필드

1) 수동 건설, :

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에서 제공하는 Fulltext Search Indexing을 사용해보십시오.

+0

이것은 주석이어야하며 대답이 아닙니다 :). 사용자의 질문은 매우 간단합니다. 그는 제안을 요구하지 않고있다. 코멘트를 주어야 할 경우 댓글로 제공하는 것이 좋습니다. – Yavar

+0

안녕하세요. 정치적 이유로이 클라이언트와 전체 텍스트 검색을 사용할 수 없습니다. 어쨌든 고마워. – User970008