2016-10-08 5 views
1
나는 다음과 같은 간단한 쿼리를 실행하고

작동하지 않는 부분 일치 검색 :ArangoDB FULLTEXT() 문자열

FOR node IN FULLTEXT("myCollection", "myAttribute", "abcdef") 
    RETURN node 

나는 "ABCDEF"== myAttribute와 myCollection에 노드를 가지고 myAttribute가있다 전체 텍스트 인덱스 및 위의 쿼리를 잘 작동하고 하나의 결과를 반환합니다.

FOR node IN FULLTEXT("myCollection", "myAttribute", "abcde") 
    RETURN node 

단어에 대한 문서 검색의 예 "가"는 문장에서 내가 대한 전체 텍스트() 검색 "ABCDE" "ABCDEF"일치해야합니다 것으로 예상 : 그러나 다음 질의는 결과를 반환하지 않습니다. 누군가 FULLTEXT ("myCollection", "myAttribute", "abcde")가 myAttribute == "abcdef"인 노드를 찾을 수 없거나 무엇을해야하는지 설명 할 수 있습니까?

감사합니다.

- 업데이트 : 위의 쿼리를 간결하고 이해하기 쉽도록 시도하기 위해 지나치게 단순화했습니다.

FOR node IN FULLTEXT("myCollection", "myAttribute", "bcde") 
    RETURN node 

내가 할 노력하고 무엇을 작동하지 않는 것을 보여주기 위해 : 나는 같은 샘플 쿼리를 제공해야합니다. ArangoDB는 어떤 방식 으로든 인덱스를 사용하여 하위 문자열 검색을 지원합니까? 내 응용 프로그램에 텍스트 검색을 추가하려고하고 LIKE를 사용하면 여러 필드 (대소 문자를 구분하지 않음)의 모든 컬렉션에서 전체 컬렉션 스캔을 수행하고 크기가 조정되지 않을까 걱정됩니다. 이 게시물은 실제로 데이터베이스에서 여러 컬렉션 (및 많은 속성이 아닌 모든 속성)에 대해 효과적인 텍스트 검색을 수행하는 방법에 관한 것입니다.

과도하게 단순화되어서 죄송합니다. 바라기를 이것은 명확하다. ArangoDB에서 사용자가 검색 창에 검색 문자열을 입력 할 때 기대하는 검색 의미 체계를 지원하는 "검색"을 구현하는 좋은 방법이 있습니까?

답변

1

Fulltext는 전체 단어를 검색하지 않기 때문에이 단어를 검색합니다.

단어 앞에 "접두사 :을 사용해야합니다.

FOR node IN FULLTEXT("myCollection", "myAttribute", "prefix:abcde") 
    RETURN node 

이 쿼리가 더 레퍼런스 및 다른 기능, 작동합니다 : Fulltext functions

+0

죄송합니다, 나는 나의 예를 단순화 이상. 나는 또한 "bcd"와 하위 문자열을 찾고있다. 색인 생성을 사용하여 부분 문자열 검색이 지원되지 않는다는 의미입니다. – muddlednbefuddled

+0

전체 텍스트 색인은 전체 일치 및 접두사 일치에만 사용할 수 있습니다. 하위 문자열 일치는 전체 수집 스캔이 필요합니다 (예 : 'FOR 노드 IN myCollection FILTER node.myAttribute LIKE "% bcd %"RETURN node'. 이것은 "bcde", "abcd"및 "abcde"와 일치합니다. – CoDEmanX

+0

감사합니다. 나는 많이 모으기 시작했다. 나는 내가하려고하는 것을 명확히하기 위해 내 글을 업데이트했다. 필자는 필자가 요구하는 전체 컬렉션 스캔보다 더 뛰어난 성능을 기대했다. – muddlednbefuddled