์ด ํฌ์คํ ์ ์ฟ ํก ํํธ๋์ค ํ๋์ ์ผํ์ผ๋ก, ์ด์ ๋ฐ๋ฅธ ์ผ์ ์ก์ ์์๋ฃ๋ฅผ ์ ๊ณต๋ฐ์ ์ ์์ต๋๋ค.
์คํ์์ค๊ฒ์์์ง - ๋ฃจ์ฌ
๋ถ๋ฅ์์ 2007/12/26 14:21like '%๊ฒ์์ด%'
์ด๋ฐ SQL์ ์ฑ๋ฅ์ ํ์ ์ฃผ๋ฒ์ด๋ค. DB ์ธ๋ฑ์ค๋ฅผ ๋ฌด์ฉ์ง๋ฌผ๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ด๋ค.
like๋ฌธ์ ์ฐ๋ ๋์ DBMS์ ๋ฌธ๊ฒ์(fulltext search)์ ์ฌ์ฉํ ์ ์๋ค.
์๋ฅผ ๋ค์ด sqlserver๋ ์ด๋ ๊ฒ ํ๋ค.
sqlserver์์ fulltext๊ฒ์
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ๋ order by๋ฑ์ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ด ๊ธ๊ฒฉํ ๋๋น ์ง๋ค.
mysql์์ ํํ ์คํธ ๊ฒ์
๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋๋ฑ์ ์ฝ์ ์ด ์๋ค.
์ธ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๊ฒ์์์ง์ ์์ธ๊ตฌ์กฐ๋ฅผ DBMS๋ก ๊ตฌํํ๋ ๊ฒ์ด๋ค. ํ ๊ทธ์์คํ ์ด ์ ์ผ ๋ง์ด ์๋ ค์ง ์ฌ๋ก์ด๋ค.
๋ง์ฝ ๋ค์ด๋ฒ์ ๊ฒ์๊ฒฐ๊ณผ์ฒ๋ผ ์ฌ๋ฌ ๋ฐ์ดํ์์ค์์ ๊ฒ์ํด์ผ ํ๋ค๋ฉด? ์ด ๋ฐฉ๋ฒ๋ก๋ ํด๊ฒฐ์ด ์๋๋ค
๋ฃจ์ฌ์ ํฌ๋กค๋ฌ๋ ์๋ค. ๊ธธ์์ง ๋ง์๊ธธ.
๋ฃจ์ฌ์ ์์ฑํ์ด ์๋๋ค. ๋ ๊ณ ๋ธ๋ก์ฒ๋ผ ์กฐ๋ฆฝํด์ผ ์ธ์ ์๋ค
์ฆ ๋ฃจ์ฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ผ๋ฟ์ด๋ค.
์์ค์์
๋ฃจ์ฌ์ ์จ์ผ ํ๋ ์ด์public void simpleLucene()
{
Analyzer analyzer = new StandardAnalyzer();
// Store the index in memory:
Directory directory = new RAMDirectory();
// To store an index on disk, use this instead (note that the
// parameter true will overwrite the index in that directory
// if one exists):
// Directory directory = FSDirectory.getDirectory("/tmp/testindex", true);
IndexWriter iwriter = new IndexWriter(directory, analyzer, true);
iwriter.setMaxFieldLength(25000);
Document doc = new Document();
String text = "This is the text to be indexed.";
doc.add(new Field("fieldname", text, Field.Store.YES,
Field.Index.TOKENIZED));
iwriter.addDocument(doc);
iwriter.close();
// Now search the index:
IndexSearcher isearcher = new IndexSearcher(directory);
// Parse a simple query that searches for "text":
QueryParser parser = new QueryParser("fieldname", analyzer);
Query query = parser.parse("text");
Hits hits = isearcher.search(query);
assertEquals(1, hits.length());
// Iterate through the results:
for (int i = 0; i < hits.length(); i++)
{
Document hitDoc = hits.doc(i);
assertEquals("This is the text to be indexed.", hitDoc.get("fieldname"));
}
isearcher.close();
directory.close();
}
(1)๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ชจ์์ด๊ธฐ ๋๋ฌธ์ ์ ์ฐ์ฑ 100%๋ค. ์๋ฅผ๋ค์ด ํํ์๋ถ์์ ์ธ๊ฑด์ง ์๋๋ฉด N-Gram๋ฐฉ์์ ์ธ๊ฑด์ง๋ฑ์ ๋ํ ํ๋จ์ ํ๋ค์์ Analyzer๋ฅผ ๊ตฌํํ๋ฉด ๋๋ค.
(2)๊ฒ์๊ฒฐ๊ณผ ํ์ด๋ผ์ดํธ ์ ๊ณตํ๋ค.
(3)๋ณต์กํ ๊ฒ์ํํ์ ์ ๊ณต
ex)์ฒ ์ธ AND ์คํฌ์ธ
์ฒ ์ธ*
title:์ฒ ์ธ -subject:์คํฌ์ธ
title:"์ฒ ์ธ ์คํฌ์ธ "~5
edate:[2007/10/10 TO 2007/12/30]
(4)์๋ํฅ์์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์์ธ๋ฐ์ดํ๋ฅผ ์ฌ๋ ค๋๊ณ ์ธ์ ์๋ค
(5)๋ค์ด๋ฒ์ฒ๋ผ ์ฌ๋ฌ ๋ฐ์ดํ์์ค์์ ํตํฉ๊ฒ์ํ ์ ์๋ค.
MultiSearcher searcher = new MultiSearcher (new Searchable[] { searchX, searchY });
Searcher searcher = new ParallelMultiSearcher (new Searchable[] { searchX, searchY });