부울 검색이 아닌지 이해하는 데 도움이되는 몇 가지 문제가 있습니다. 내가 아는 한 부울 검색은 AND, OR 및 NOT을 쿼리에 사용할 수있게합니다. 하지만 부울 검색이 아닌 것은 어떻습니까? 저는 어딘가에서 단어를 완성하는 것뿐만 아니라 부분 문자열을 검색 할 수 있다는 것을 알았지 만, 각각의 의미를 완전히 이해하고 싶었습니다. 또한 예를 들어 Google 부울 또는 부울이 아닌 것일 수 있습니다. Oracle Text 또는 Apahe Solr는 어떻습니까?부울 대 부울 검색
답변
부울 검색에는 순전히 부울 모델 기법이 아닌 접근 방법이 포함됩니다. .
아마도 이러한 방법의 가장 일반적인 예는 vector-space model입니다.
이 모델에서 각 문서는 포함 된 단어 (또는 bi-grams ...)로 표현되는 벡터입니다. 각 문서의 크기는 어휘의 용어 수입니다.
이 모델의 유사점은 쿼리 인 '가짜'문서를 작성하고이 가짜 문서를 코퍼스의 다른 문서와 비교하여 수행됩니다. 쿼리와 문서의 유사성이 높을수록 결과가 좋습니다.
일반적인 유사 측정은 cosine-similarity입니다.
이 모델은 tf-idf model과 잘 어울립니다 (td-idf는 각 벡터의 각 항목에있는 값이 무엇인지 결정합니다).
부울 모델이 아니라는 점에 유의하십시오. 당신은 벡터의 유사성을 비교할 때 '집합'에 초점을 두지 않습니다. 이것은 완전히 다른 모델입니다.
또한이 방법은 중요한 이점이 있습니다. 즉, "관련성 높은"또는 "관련 없음"과 같은 부울 응답뿐만 아니라 각 문서와 관련된 점수를 반환합니다.
벡터 공간은 AND, OR 필드를 허용하지 않지만 2 위상 검색을 수행하면 쉽게 해결할 수 있습니다. 첫 번째는 부울 모델을 사용하여 후보자를 얻는 것이고 두 번째는 벡터 공간을 사용하여 각 문서의 점수를 얻는 것입니다.
다른 모델은 문서 밖으로 language model를 구축 - 언어 모델은 P(word|M) = the probability of the model M to generate the word
로 설명되어 있습니다.
일반적인 언어 모델은 P(word|document) = #occurances(word,document)/|document|
입니다. 확률 제로가 발생하지 않도록하려면 - 일반적으로 평활화 기술을 추가합니다. 일반적인 기술은 다음과 같습니다
P(word|document) = alpha*#occurances(word,document)/|document| + (1-alpha)*#occurances(word,corpus)/|corpus|
지금 - 우리는 하나 개 이상의 용어의 쿼리가있을 때 :이 모델은 실제로 alpha=1
을 설정하여 허용과 의미
P(q|d) = P(t1|d)*P(t2|d)*...*P(tn|d)
하는 것으로, 그리고 : q=t1 t2 ... tn
를, 우리가 계산 OR 의미론은 alpha!=1
입니다.
(1) 부울 검색은 기본적으로 용어 설정됩니다
각 용어는 그들에이 용어가 모든 문서를 포함하는 세트와 연결되어 있습니다. 자, 세트 세트에 오션을 설정하면됩니다. AND는 교차점이며, OR은 합집합입니다.
- 1. 부울 (부울)
- 2. BOOL 대 부울
- 3. 뮤텍스 대 부울
- 4. MySQL 부울 부분 검색
- 5. 부울 검색 PHP
- 6. Freemarker 부울 속성 검색
- 7. 부울 필드 대 별도의 테이블
- 8. 레일스 SQLite 대 MySQL 부울
- 9. 부울 대 열거 형 vs.
- 10. instanceof 대 부울 유형 검사
- 11. Java에서 원자 부울 대 SynchronizedBoolean
- 12. 부울 값에 부울 연산을 부울 값으로 바꿉니다.
- 13. 위 부울 낮은 부울
- 14. 부울 번호에 따른 부울
- 15. 전 처리기 플래그 대 부울 플래그 대
- 16. 부울 대 힌트 대 Python3 함수 어노테이션
- 17. 부울
- 18. 부울
- 19. 부울
- 20. MySQL 부울 전체 텍스트 검색
- 21. symfony3 : 부울 필드로 query_builder 검색
- 22. Parse.com : TableViewCell의 부울 값 검색
- 23. 재귀 검색 부울 반환 함수
- 24. 부울 'and'ElasticSearch.Nest 클라이언트 내에서 검색
- 25. 파이썬에서 문자열의 길이가 부울 검색
- 26. System.Web.UI.Page.ProcessRequestMain (부울 includeStagesBeforeAsyncPoint, 부울 includeStagesAfterAsyncPoint)
- 27. 부울 객체를 부울 프리미티브와 비교
- 28. PHP 문자열 대 부울 속도 테스트
- 29. 바인드 h : selectBooleanCheckbox 값이 부울/부울 대신 정수/부울
- 30. "null이 아님"대 부울 MySQL - 성능
감사합니다. 지금은 분명하게 생각합니다.따라서 부울 검색이 아닌 부울 검색을 사용하면 문서 내에서 특정 용어가 얼마나 많이 발견되어 검색과 얼마나 관련이 있는지 확인할 수 있습니다. – carcaret
@ carcaret 일반적으로 그렇습니다. 그러나 그럴 필요는 없습니다. 바이너리 벡터로 벡터 공간 모델을 사용할 수 있습니다. 나는 개인적으로 아무런 이익도 얻지 못한다. (대안보다는 유익하지 않기 때문에) 가능하지만 가능하다. – amit