2012-03-06 3 views
0

사용자가 자신을 찾으면 3 단계로 하위 범주가있는 많은 범주가있는 웹 사이트 (Entity Framework, MySQL, .net 4, C# 사용)를 작성하고 있습니다. 각 "제품"을 찾고 있었다 예를 들어 서로 다른 속성을 가질 수있다 :패싯으로 검색 한 asp.net으로 작성된 웹 사이트

"레스토랑"할 수 있습니다 : 평균 접시 가격, 가능한 어린이 메뉴를 및 "체육관"가질 수 있습니다

가능한 수영장을 사용할 수, 개인 트레이너를

저는 C#을 처음 접했고 라이브러리 Lucene.NET 및 검색 엔진 Solr을 사용하지 않고 적어도 simliar를면 처리 된 검색 솔루션을 구현하는 방법을 알아 냈습니다. 특히 아마 공유 호스팅 환경. 사람이 이러한 기술을 사용하지 않고 유사한 기능을 구현하고 DB 구조 및 코드 샘플에 대한 몇 가지 아이디어를 가지고 노력하면

원더 ... 또한 내가 사람이 싸구려 VPS 호스팅을 알고 않습니다 루씬과 SOLR를 사용해야한다

하는 Solr의 설치와 사용을 허용하고, 내가 찾지 못했던 부분 검색을 어떻게 생성하는지 튜토리얼을 던질 수도있다.

감사

+0

@Xodarap : 아니요, OP는 Solr 또는 Lucene을 사용하고 싶지 않습니다. –

+0

[관계형 데이터베이스에서 패싯 검색의 효율적인 구현] (http://stackoverflow.com/questions/1847909/efficient-implementation- of-faceted-in-relational-databases) –

답변

1

바와 같이 this question 설명, 관계형 데이터베이스를 효율적으로 패 시팅 (faceting) 구현할 수 없습니다. Lucene.NET은 프로세스 내에서 실행되므로 공유 호스팅 환경에서 문제가되어서는 안됩니다. 또는 hosted search solutions을 들여다 볼 수도 있습니다.

+0

우리는 C#에서 패싯 검색을 구현하는 방법을 알고 싶지 만 "효율적으로"수행 할 수는없는 표준 응답이 아닙니다. 관계형 DB의 제품 항목을 읽거나, 메모리에있는 속성을 캐시 할 수 없습니까?이 메모리 배열을 통해 C#을 사용하여 각 패싯의 수를 계산하는 것보다 검색 할 수 있습니까? 꽤 똑바로 C#에서 "이 질문을 반복하는 것보다 훨씬 낫다"는 것이 불가능하다는 것입니다 (프랑스어가 아닙니다). –

0

하위 범주는 으로 구현할 수 있으며 어느 곳에서나 깊이를 효율적으로 구현할 수 있습니다. Books, Books>Non-FictionBooks>Non-Fiction>Diet에 대한 패싯 검색을 구현하는 것은 간단합니다. 계층 적 패싯에 대한 질문 (Ways to do hierarchial faceting in Solr?)을 참조하십시오.


동적 필드는 엔티티에 속성을 추가하는 친구입니다.

<dynamicField name="*_i" type="int" indexed="true" stored="true"/> 
<dynamicField name="*_s" type="string" indexed="true" stored="true"/> 
<dynamicField name="*_t" type="text" indexed="true" stored="true"/> 
//you may need a multi-valued string type if you want faceting 

그래서 당신은 단순히 문서를 추가 할 수의 schema.xml 수정 :

restaurant_average_dish_price_i: 123 
restaurant_kids_menu_available_s:"yes" 

첫 번째 필드는 비교 작업을위한 준비가 int 될 것, 두 번째는 페이스 팅에 대 한 준비가 문자열이된다.

배포 옵션에 관해서는 http://wiki.apache.org/solr/SchemaXml#Dynamic_fields


http://www.tnrglobal.com/blog/2010/07/dynamic-fields-in-apache-solr/

는 마우 페르의 답변을 따르십시오.