Toon posts:

[MSSQL] Full text search

Pagina: 1
Acties:

Verwijderd

Topicstarter
Met SQL ben ik vrij nieuw, maar toch al wat dingen aan het proberen.
In mijn database heb ik een tabel faq waar een aantal items instaan.
(columns: faqid, catid, question awnser).
Op deze tabel heb ik een full text index gemaakt met behulp van de wizard van MSSQL.

De volgende query heb ik er op los gelaten:
code:
1
2
3
4
5
6
7
8
9
10
11
select * 
  from DBO.FAQ
       INNER JOIN
       (SELECT *
          FROM containstable(FAQ, awnser, '*calendar*',1)
         UNION ALL
        SELECT *
          FROM containstable(FAQ, QUESTION, '*calendar*',1)
        ) ct
     on faqid = CT.[key]
ORDER BY faqid


Er komen netjes wat resultaten terug.
Echter wanneer ik ipv "calendar" een hele zin ofzo intik, dan werkt de query niet meer.
Wanneer ik tussen de verschillende woorden 't woord NEAR plak werkt het wel weer.
Echter is dit niet handig, want ik wil deze query gaan gebruiken om een search module aan te bieden op een Java/JSP website. (Google achtig idee).

Wanneer men dan een woord of zin invult, moet er in zowel de question als awnser kolom worden gezocht en de links naar de desbetreffende FAQ item worden weergegeven.

Het is daarom niet handig om 't woord NEAR door de gebruiker zelf te laten intikken.
Is hier een andere oplossing voor? Om in Java de input van de gebruiker helemaal uit elkaar te trekken en 't woord NEAR er tussen te plakken, weet ik punt 1 niet of dat kan en punt 2 niet of dat nou wel zo effient programmeren is.

Heeft iemand hier wellicht wat ervaring met het opbouwen van een dergelijke search query? Die mij een schopje in de juiste richting kan geven?

  • Noel
  • Registratie: September 2001
  • Laatst online: 14:16
select * from table
where question like '%hier uw zoek term werkt ook met spaties%'
or answer like '%hier uw zoek term werkt ook met spaties%';

Is wel MySQL-syntax, maar iets gelijkaardig moet ook kunnen in MSSQL.

(Als ik je uitleg goed begrijp natuurlijk) :)

[ Voor 16% gewijzigd door Noel op 19-05-2005 11:57 ]

Server: Xeon X3430 21TB RAID 5 | Game: 5900X, 6900XT, dual FS2735 | Mobile: Lenovo X1 Carbon, Thinkpad T440s, Moto G7 Plus


  • whoami
  • Registratie: December 2000
  • Laatst online: 17:15
-Noel- schreef op donderdag 19 mei 2005 @ 11:55:
select * from table
where question like '%hier uw zoek term werkt ook met spaties%'
or answer like '%hier uw zoek term werkt ook met spaties%';

Is wel MySQL-syntax, maar iets gelijkaardig moet ook kunnen in MSSQL.
Dat is geen full text search, en kan daarbij ook nog eens traag zijn.

https://fgheysels.github.io/


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Je zou eens kunnen kijken naar Lucene.

Ik heb er zelf intussen redelijk wat ervaring mee en het is erg snel :)

Verwijderd

Topicstarter
Alarmnummer schreef op donderdag 19 mei 2005 @ 12:12:
Je zou eens kunnen kijken naar Lucene.

Ik heb er zelf intussen redelijk wat ervaring mee en het is erg snel :)
Zal ik eens naar kijken, maar zag al dat het iets met Apache te maken heeft, en ik draai Weblogic 8.1

-edit-
Oke, 't is door Apache gemaakt, maar zou wel te importeren zijn.
Maar om eerlijk te zijn lijkt me dit nogal erg veel overkill om een FAQ van zo'n 50 items te doorzoeken.

[ Voor 22% gewijzigd door Verwijderd op 19-05-2005 12:24 ]


  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
Kun je in je code niet gewoon een replace doen voordat je de zoekterm naar je query stuurt?
(Replace " " by " NEAR ")

Verwijderd

Topicstarter
bee-es schreef op donderdag 19 mei 2005 @ 12:23:
Kun je in je code niet gewoon een replace doen voordat je de zoekterm naar je query stuurt?
(Replace " " by " NEAR ")
Zover was ik nog niet. ;-)
Eerst de query bouwen dan pas de code.
Maar daar ga ik straks mee beginnen, dan zal ik dat eens uitproberen.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Verwijderd schreef op donderdag 19 mei 2005 @ 12:14:
[...]


Zal ik eens naar kijken, maar zag al dat het iets met Apache te maken heeft, en ik draai Weblogic 8.1

-edit-
Oke, 't is door Apache gemaakt, maar zou wel te importeren zijn.
Maar om eerlijk te zijn lijkt me dit nogal erg veel overkill om een FAQ van zo'n 50 items te doorzoeken.
Mwuah.. valt mee hoor.. als je weet hoe Lucene werkt dan kan je zoiets gerust in een uurtje of wat in elkaar draaien.

Verwijderd

Topicstarter
bee-es schreef op donderdag 19 mei 2005 @ 12:23:
Kun je in je code niet gewoon een replace doen voordat je de zoekterm naar je query stuurt?
(Replace " " by " NEAR ")
Enig idee hoe dat werkt in Java?
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 public String doSearch()
  {
    // Build faq parameterlist
    Enumeration parameters = request.getParameterNames();
    ArrayList filteredParameters = new ArrayList();

    while (parameters.hasMoreElements())
    {
      String name = (String) parameters.nextElement();
      String[] values = request.getParameterValues(name);
      boolean like = false;
      boolean notNull = false;
      if (!name.equalsIgnoreCase("action") && !name.equalsIgnoreCase("operation"))
      {
        if (name.equalsIgnoreCase("q&a"))
        {
          name.replace(" ", "NEAR");          
        }


Die laatste eet ie dus niet. Terwijl ie wel zelf komt met .replace zodra je values intikt.
Of pakt ie dan een andere values en niet die string?

[ Voor 16% gewijzigd door Verwijderd op 19-05-2005 13:17 ]


Verwijderd

Topicstarter
Een collega van mij beweerd nu dat het niet mogelijk is in Java wat ik wil doen.
Lijkt mij toch van wel? Je vraagt tenslotte een input op, die kun je bewerken tot je er bij neervalt of heeft ie toch gelijk?

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 00:35

Jrz

––––––––––––

Verwijderd schreef op vrijdag 20 mei 2005 @ 10:49:
Een collega van mij beweerd nu dat het niet mogelijk is in Java wat ik wil doen.
Lijkt mij toch van wel? Je vraagt tenslotte een input op, die kun je bewerken tot je er bij neervalt of heeft ie toch gelijk?
In jdk1.5 kan je wel strins replacen.. Anders effe een simpel helpertje maken / gebruiken van apache-commons om strings te replacen

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Verwijderd

"werkt de query niet meer.." Wat houdt dat in? MSSQL FULLTEXT Search maakt gebruik van zogenaamde noise files, als er woorden in de string waarop je zoekt en deze voorkomen in de noise file, geeft de query een error. Let op dat je bij het aanmaken van je fulltext catalogus de juiste languagecode meegeeft, zodatie de juiste noise file gebruikt. Je zal de error dus moeten ondervangen, of de noise file moeten editten en als je de query opbouwt uit meerdere worden en je gebruikt OR, en er staan één woord bij die niet in de noise file staat dan moetie het wel goed doen!

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 00:35

Jrz

––––––––––––

voor een faq van 50 dingetjes kan je net zo goed een like query gebruiken

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Verwijderd

Topicstarter
Verwijderd schreef op vrijdag 20 mei 2005 @ 11:27:
"werkt de query niet meer.." Wat houdt dat in? MSSQL FULLTEXT Search maakt gebruik van zogenaamde noise files, als er woorden in de string waarop je zoekt en deze voorkomen in de noise file, geeft de query een error. Let op dat je bij het aanmaken van je fulltext catalogus de juiste languagecode meegeeft, zodatie de juiste noise file gebruikt. Je zal de error dus moeten ondervangen, of de noise file moeten editten en als je de query opbouwt uit meerdere worden en je gebruikt OR, en er staan één woord bij die niet in de noise file staat dan moetie het wel goed doen!
De FAQ is Engels en Nederlands door elkaar, maar voor het overgrote deel Engels, dus ik heb voor English UK gekozen. Met noise files heb ik geen ervaring, zal er 't boek eens opnaslaan.
Jrz schreef op vrijdag 20 mei 2005 @ 11:32:
voor een faq van 50 dingetjes kan je net zo goed een like query gebruiken
True, maar dat ding blijft niet lang 50 items, die zal ongetwijfeld groeien.

[ Voor 64% gewijzigd door Verwijderd op 20-05-2005 14:09 ]


  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 00:35

Jrz

––––––––––––

Verwijderd schreef op vrijdag 20 mei 2005 @ 14:07:
[...]


De FAQ is Engels en Nederlands door elkaar, maar voor het overgrote deel Engels, dus ik heb voor English UK gekozen. Met noise files heb ik geen ervaring, zal er 't boek eens opnaslaan.


[...]

True, maar dat ding blijft niet lang 50 items, die zal ongetwijfeld groeien.
Dan nog.. hoe vaak gaat die faq worden gebruikt, en hoe groot gaat hij worden?
Als je nu een like gebruikt kan je verder met andere dingen en later een leuke search maken

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)


Verwijderd

Topicstarter
Jrz schreef op zondag 22 mei 2005 @ 19:07:
[...]


Dan nog.. hoe vaak gaat die faq worden gebruikt, en hoe groot gaat hij worden?
Als je nu een like gebruikt kan je verder met andere dingen en later een leuke search maken
Nou ja, denk dat ie wel regelmatig gebruikt gaat worden door nieuwe collega's.
En d'r komen er aardig wat bij de komende maanden.

De andere dingen zijn nagenoeg af, de search staat als een van de laatste dingen op het programma, vandaar dat ik 't graag in 1x goed wil hebben. Kan wel een like maken, maar ja dat hebben lui ook snel genoeg wel door dat het niet zoekt zoals bijv. google.

  • Jrz
  • Registratie: Mei 2000
  • Laatst online: 00:35

Jrz

––––––––––––

Maar dan heb je ook niets aan FTS.. Want die werkt ook niet als die van google. En dan komt lucene toch het dichts in de buurt

Ennnnnnnnnn laat losssssssss.... https://github.com/jrz/container-shell (instant container met chroot op current directory)

Pagina: 1