import { useEffect, useState } from "react"; import "./App.css"; import { searchByText, searchByTheme, processTheme, processKeywords, searchByKeywords } from "./utils/parsing"; import Graph from "./components/graph"; const files=['大家想到未來不會很絕望嗎','日常生活','有人懂嗎','看到學貸還款通知書寄來','租屋網站']; const ContentTags=['Summary','Keywords','Order','User','Content']; const DisplayTypes=['text','point']; function App() { const [themes, setThemes]=useState([]); const [keywords, setKeywords]=useState([]); const [results, setResults]=useState([]); const [selectTab, setSelectTab]=useState(DisplayTypes[1]); function preText(){ files.forEach(async (file)=>{ const url = `assets/collect/${file}.json`; await processData(url); }); } function preTheme(){ if(themes?.length>0) processTheme(themes); } function preKeywords(){ if(keywords?.length>0) processKeywords(keywords, 'keywords_v1'); } function processRaw(){ processRawFiles('resources/raw/1222', 'resources/collect/1222'); } useEffect(()=>{ if(!results || results.length===0) return; },[results]); useEffect(()=>{ fetch('themes_v2.json').then(response=>response.json()).then(async (json)=>{ // console.log(json); setThemes(json); }); fetch('keywords.json').then(response=>response.json()).then(async (json)=>{ // console.log(json); setKeywords(json); }); },[]); return (
search limit =

{/*

search by any text

*/}

search by theme

search by keyword

{keywords.map((keyword, index)=>( {keyword.title} ))}
Results={results?.length}
{DisplayTypes.map((type)=>( ))}
{selectTab==='text' && (
#
Score
Order
Teaser
Content
Summary
Keywords
Distance to Keywords
{results?.length>0 && results.map((item, index)=>{ let output={}; return (
#{index+1}

score={item.score?.toFixed(4)}

{(()=>{ if(item.type==='keyword'){ const payload=JSON.parse(item.payload.text); return (<>
{payload?.title}
--
--
--
); } let p={ ...item.payload, metadata: JSON.parse(item.payload.metadata), }; return (<>
{p.number}/{p.total}
{p.teaser}
{p.metadata.text}
{p.summry}
{p.keywords.map(el=>{el})}
{p.group.map(el=>(<> {el.title}({el.distance.toFixed(2)}) ))}
); })()}
); })}
)} {selectTab==='point' && ( )}
); } export default App;