2014-04-28 5 views
3

나는 mysql 데이터베이스에서 PHP와 같은 키워드로 검색하고 있습니다. 문제는 내가 동의어를 데이터베이스에서 입력 한 것과 같습니다. 모든 제품을 가지고 있습니다. 신발, 그리고 사용자가 신발이나 일부 일치하지 않는 단어를 입력하십시오. 이러한 다른 조건을 검색하는 방법. 여기를 참조하십시오.php sql 데이터베이스에서 동의어를 검색하십시오.

는 현재

Select * from table where name like '%user entered string%' 

이러한 조건 나를 위해

+0

당신이 할 수있는 일은 동의어 목록 (또는 테이블)을 유지하는 것입니다. 대신 그들이 무엇을 찾고 있어야하는지, 프로그램이 당신을 위해 다르게 할 것입니다. – Jonast92

+2

k.it는 실제 테이블에서 검색하기 전에 shud가 내 동의어 테이블로 이동하여 해당 단어의 동의어 목록을 얻은 다음 주 테이블에서 검색한다는 의미입니다. – user3575612

+0

글쎄, 당신은 아마도 외부 앱 - thesaurus.com 또는 기타 등등을 참조 할 수 있습니다. 그러나 너무 광범위하여 유용하지 않을 수 있습니다. 따라서 Jonast92가 옳다고 생각합니다. – Strawberry

답변

1

요약하자.

테이블에 products이 있다고 가정 해 보겠습니다. 고유 한 ID를 가진 제품으로 구성되어 있다고 가정하고 희망합니다.

products 

id  product 
1  Shoes 
2  Trousers 

등등. 당신이, 동의어, 또 다른 열을 추가의 말하도록한다면, 그것은 다음과 같이 보일 것입니다 :

products 

id  product synonyms 
1  Shoes  Footwear, stuff on feet, 
2  Trousers 

우리는이를 원하지 않는다. 동의어 열을 선택하고 문자열을 구문 분석하고 각 제품에 새 동의어를 추가하려는 경우 열을 파기하지 않아야합니다.

각 동의어가 제품 테이블의 고유 ID를 참조하는 동의어 테이블을 가질 수있는 원자 데이터베이스를 갖는 것이 훨씬 의미가 있습니다. 이렇게하면 이전 동의어를 삭제하고 새 동의어를 쉽게 추가 할 수 있습니다.

products 

id  product 
1  Shoes 
2  Trousers 

synonyms 
id  product_id  synonym 
1  1    Footwear 
2  1    stuff on feet 

원본 선택성 문이 실패하면이 표를 검색 할 수 있습니다.

외부 데이터 소스를 사용하는 것도 가능하지만 흐름을 제어하고 외부 소스를 피하려는 경우 가장 적합한 방법 일 것입니다.

+0

K. 많이 들었습니다. 꼬박 꼬리표로 시도하십시오 – user3575612

+0

@ user3575612 어떻게 됐습니까? – Jonast92

+0

@ Jonast92- 하나의 동의어 표를 사용하여 사용자가 일부 데이터를 입력하면이 표를 frst에서 읽은 다음 코드를 통해 전달하려고 일부 데이터를 입력했습니다. – user3575612

0

를 해결하는 방법에 대한 안내하십시오 선택 쿼리 사용하여 다음 메신저, 가장 좋은 방법은, 경기의 가능성 키워드를 추가 (신발, 신발, 남자 옷을 입고있다 등)을 모든 제품 (키워드 열에)에 추가하면 어떤 사용자가 검색됩니다. 이 열 (또는 표)에서 제품을 검색하십시오.

+0

어, 접근 방식에 따라 신발, 신발 같은 키워드를 추가 제품 목록 테이블 only.no 동의어 테이블을 만들 필요가 없습니다! – user3575612

+0

데이터베이스가 가능한 한 원자 적이어야합니다. 제품 테이블에서 문자열을 선택하고 나중에 원하는 문자열을 추가하고 나중에 동의어 문자열을 구문 분석해야하는 등의 어려움이있을 것입니다. 각 행이 하나의 동의어와 ID로 구성되는 원자 테이블을 제품 테이블에 추가하는 것이 훨씬 더 중요합니다. – Jonast92

+1

은 제품 및 동의어에 대한 별도의 테이블을 의미하며, ryt? – user3575612

관련 문제