여러 SQLite 데이터베이스 테이블의 콘텐츠에 대한 검색 색인을 구축하고 Datasette를 사용하여 이에 대해 패싯 검색을 실행합니다.
이 플러그인의 실제 예는 https://datasette.io/-/beta에서 실행되고 있으며 이 YAML 파일을 사용하여 구성되었습니다.
이 예제가 작동하는 방식에 대해 Datasette.io용 검색 엔진 구축에서 자세히 알아보세요.
이 도구를 다음과 같이 설치하십시오.
$ pip install dogsheep-beta
dogsheep-beta
명령줄 도구를 사용하여 인덱서를 실행합니다.
$ dogsheep-beta index dogsheep.db config.yml
config.yml
파일에는 인덱싱해야 하는 데이터베이스 및 문서 유형에 대한 세부 정보가 포함되어 있습니다.
twitter.db :
tweets :
sql : |-
select
tweets.id as key,
'Tweet by @' || users.screen_name as title,
tweets.created_at as timestamp,
tweets.full_text as search_1
from tweets join users on tweets.user = users.id
users :
sql : |-
select
id as key,
name || ' @' || screen_name as title,
created_at as timestamp,
description as search_1
from users
그러면 해당 SQL 쿼리의 데이터로 채워진 dogsheep.db
데이터베이스에 search_index
테이블이 생성됩니다.
기본적으로 이 도구가 생성하는 검색 색인은 포터 형태소 분석을 위해 구성됩니다. 이는 run
같은 단어를 검색하면 runs
또는 running
포함하는 문서와 일치한다는 의미입니다.
Porter 형태소 분석을 사용하지 않으려면 --tokenize none
옵션을 사용하세요.
$ dogsheep-beta index dogsheep.db config.yml --tokenize none
여기에서 다른 SQLite 토큰화 인수를 전달할 수 있습니다. SQLite FTS 토크나이저 설명서를 참조하세요.
쿼리에서 반환할 수 있는 열은 다음과 같습니다.
key
- 고유한(해당 유형 내에서) 기본 키title
- 항목의 제목timestamp
- ISO8601 타임스탬프(예: 2020-09-02T21:00:21
search_1
- 검색 색인에 포함될 더 큰 텍스트 덩어리category
- 정수 카테고리 ID, 아래 참조is_public
- 공개 여부를 지정하는 정수(0 또는 1, 설정되지 않은 경우 기본값은 0)공개 기록은 공개 트윗, 블로그 게시물, GitHub 커밋과 같은 것입니다.
인덱싱된 항목에 카테고리를 할당할 수 있습니다. 카테고리는 categories
테이블의 레코드에 해당하는 정수이며, 기본적으로 다음을 포함합니다.
ID | 이름 |
---|---|
1 | 생성됨 |
2 | 저장됨 |
3 | 받았다 |
created
Dogsheep 인스턴스 소유자가 생성한 항목에 대한 것입니다.
saved
저장했거나, 좋아요를 누르거나, 즐겨찾기한 항목에 대한 것입니다.
received
다른 사람이 특별히 보낸 항목(예: 수신 이메일 또는 직접 메시지)에 대한 것입니다.
datasette install dogsheep-beta
실행하거나 Datasette와 동일한 환경에서 pip install dogsheep-beta
사용하여 Dogsheep Beta Datasette 플러그인을 설치합니다.
일단 설치되면 /-/beta
에서 사용자 정의 검색 인터페이스를 사용할 수 있습니다. 이 인터페이스를 사용하여 검색을 실행할 수 있습니다.
Datasette 플러그인에는 몇 가지 구성 옵션이 있습니다. metadata.json
구성 파일에 다음을 추가하여 이를 설정할 수 있습니다.
{
"plugins" : {
"dogsheep-beta" : {
"database" : " beta " ,
"config_file" : " dogsheep-beta.yml " ,
"template_debug" : true
}
}
}
플러그인의 구성 설정은 다음과 같습니다.
database
- 검색 색인이 포함된 데이터베이스 파일입니다. 파일이 beta.db
인 경우 database
beta
로 설정해야 합니다.config_file
- Dogsheep 베타 구성이 포함된 YAML 파일입니다.template_debug
- 사용자 정의 템플릿에 오류가 발생할 경우 디버깅 출력을 활성화하려면 이를 true
로 설정합니다. 아래를 참조하세요. 각 색인화된 항목 유형은 config.yml
파일의 일부로 사용자 정의 표시 HTML을 정의할 수 있습니다. Jinja 템플릿의 일부가 포함된 display
키와 선택적으로 표시할 데이터를 가져오기 위해 실행할 추가 SQL이 있는 display_sql
키를 사용하여 이 작업을 수행할 수 있습니다.
트윗에 대한 사용자 정의 표시 템플릿을 정의하는 방법은 다음과 같습니다.
twitter.db :
tweets :
sql : |-
select
tweets.id as key,
'Tweet by @' || users.screen_name as title,
tweets.created_at as timestamp,
tweets.full_text as search_1
from tweets join users on tweets.user = users.id
display : |-
<p>{{ title }} - tweeted at {{ timestamp }}</p>
<blockquote>{{ search_1 }}</blockquote>
이 예에서는 인덱싱 쿼리가 실행될 때 search_index
테이블에 저장된 값을 재사용합니다.
템플릿에 표시할 추가 값을 로드하려면 다음과 같은 display_sql
쿼리를 사용하세요.
twitter.db :
tweets :
sql : |-
select
tweets.id as key,
'Tweet by @' || users.screen_name as title,
tweets.created_at as timestamp,
tweets.full_text as search_1
from tweets join users on tweets.user = users.id
display_sql : |-
select
users.screen_name,
tweets.full_text,
tweets.created_at
from
tweets join users on tweets.user = users.id
where
tweets.id = :key
display : |-
<p>{{ display.screen_name }} - tweeted at {{ display.created_at }}</p>
<blockquote>{{ display.full_text }}</blockquote>
display_sql
쿼리는 모든 검색 결과에 대해 실행되며, search_index
테이블의 키 값을 :key
매개변수로 전달하고 사용자의 검색어를 :q
매개변수로 전달합니다.
SQLite에서는 많은 작은 쿼리가 효율적이기 때문에 이는 잘 수행됩니다.
템플릿 중 하나를 렌더링하는 동안 오류가 발생하면 검색 결과 페이지에 500 오류가 반환됩니다. 위에서 설명한 template_debug
구성 설정을 사용하면 오류가 발생한 검색 결과 항목에 대한 디버깅 정보를 대신 출력할 수 있습니다.
이 플러그인에는 결국 흥미로운 콘텐츠를 렌더링하는 데 유용한 여러 가지 단축키가 포함됩니다.
사용 가능한 첫 번째 단축키는 지도를 표시하는 것입니다. 사용자 정의 컨텐츠 출력을 다음과 같이 만드십시오.
< div
data-map-latitude =" {{ display.latitude }} "
data-map-longitude =" {{ display.longitude }} "
style =" display: none; float: right; width: 250px; height: 200px; background-color: #ccc; "
> </ div >
페이지의 JavaScript는 data-map-latitude
및 data-map-longitude
있는 모든 요소를 찾고, 찾은 경우 Leaflet을 로드하고 해당 요소를 해당 위치를 중심으로 하는 지도로 변환합니다. 기본 확대/축소 수준은 12입니다. 또는 data-map-zoom
속성을 설정하여 이를 사용자 정의할 수 있습니다.
이 플러그인을 로컬로 설정하려면 먼저 코드를 체크아웃하세요. 그런 다음 새 가상 환경을 만듭니다.
cd dogsheep-beta
python3 -mvenv venv
source venv/bin/activate
또는 pipenv
사용하는 경우:
pipenv shell
이제 종속성과 테스트를 설치합니다.
pip install -e '.[test]'
테스트를 실행하려면 다음 안내를 따르세요.
pytest